Forum: PC-Programmierung Wie Daten übers Internet übertragen?


von Matthias (Gast)


Lesenswert?

Nehmen wir mal an, man hat eine Steuerung und diese will man an einem 
anderen Ort Überwachen, bzw. Daten auslesen. Auf der einen Seite steht 
ein PC, der mit der Steuerung und dem Internet verbunden ist. Auf der 
anderen Seite ist ein weiterer Rechner, der auch mit dem Internet 
verbunden ist.
Wie bekommt man am besten Daten vom einem Rechner zum anderen? Ich 
könnte Delphi nutzen. Jemand eine Idee?

von Di P. (drpepper) Benutzerseite


Lesenswert?

das kommt natürlich darauf an, welche schnittstellen die steuerung zum 
pc vor ort hat

von C. H. (_ch_)


Lesenswert?

SSH?

von Sven P. (Gast)


Lesenswert?

Jopp, am einfachsten stellste z.B. ne HTTP-Verbindung her (setzt 
Webserver voraus, also wenns z.B. sowieso nen Linuxrechner ist). 
Ansonsten würd ich da ein simples Programm an einem Port deiner Wahl 
lauschen lassen, welches bei eingehender Verbindung kurz das 
Datentelegramm rausschickt. Könnte man unter Linux bereits mit 
Konsolen-Bordmitteln lösen, ohne irgendwas zu programmieren.

Aber vermutlich benutzt du ja die Windose (mal abgesehen davon, dass die 
Linux-Konsole sowieso unbrauchbar und für total isolierte, asoziale 
Hacker ist), also entweder mit dem Dott-Nett-Geraffel rumwurschteln, 
oder GCC-Crosscompiler installieren oder sich mit den 
Delphi-Internet-Komponenten rumschlagen.

von Luc K. (studioluc)


Lesenswert?

Matthias,

ich gehe mal davon aus das die 2 pc's per DSL mit dynamisches IP am 
internet hängen? Zuerst müssen beide PC's irgendwie einander "kennen" 
obwohl sie ein dynamische (immer wieder änderende IP adresse) haben. 
Dafür gibt es (teils kostenlose, teils mit kosten verbunden) dienste wie 
dyndns.org, ... Hier kannst du eine art von DNS eintrag machen lassen, 
wobei auf beide PC's dan auch ein client programm (was man auch als 
kostenlose software bekommen kan) laufen muss, was ihre dynamische ip's 
an diese dienst übermittelt. Inzwischen gibt es SOHO bzw. heim-router 
die diese ganze thematik schon eingebaut haben.

Wenn beide rechner die IP adresse der gegenstelle so ermitteln können, 
ist ein normale socket stream ausreichend für die kommunikation. Wenn 
das für dich noch neugebiet ist, solltest du im internet mal nach "indy" 
suchen. Für delphianer sollte das bekannt sein. Normale sockets aus der 
VCL tun's auch. Das übertragungsprotokol kannst du ja selber bauen.

Wie mein vorgänger C.H. auch schon erwähnte : du solltest dir auch 
gedanken machen über sicherheit bzw. verschlüsselung. Du kannst oder die 
verbindung an sich verschlüsselen (nennt man auch ein gesicherte tunnel) 
per (open)ssh, ... oder du kannst die pakete die du über die Sockets 
schickst auch selbst verschlüsseln mit 3DES oder so. In C#/.net ist das 
kein thema, abhängig von deine delphi version ist arbeit angesagt. Die 
crypto-api ist jedenfalls der richtige anlauf, obwohl das alles kein 
pappenstiel ist. Hilfe findest du bestimmt auch für delphi auf 
http://torry.net

Viel erfolg!

von Sven P. (Gast)


Lesenswert?

Die Sache mit den IPs würd ich unter Linux per DynDNS lösen. Einfach den 
dyndns-Clienten in einen Cronjob setzen, dann steht die IP.

Für die Sicherheit auf beiden Seiten dann einen SSH-Endpunkt aufsetzen, 
dann hab ich nen idiotensicheren Tunnel ohne Gefahr zu laufen, irgendwas 
mit dem Crypto-Gerümpel falsch zu verstehen und falsch zu benutzen.

Der Server kriegt dann im xinetd-Dämon einen einfachen Textdienst (es 
reicht dazu ein Konsolenprogramm, welches einfach die gewünschten Daten 
auf die Konsole druckt). Der xinetd-Dämon sorgt dann automatisch dafür, 
dass diese Daten im Netzwerk landen.

Aber wie gesagt, Linux-Konsole ist ja absolut unbrauchbar. SCNR.

von Gerardc (Gast)


Lesenswert?

ssh gibts auch für windows und cygwin liefert den rest, wenn man nur 
dateien übertragen will, reicht scp (scp arbeitet mit ssh) (winscp wenn 
man ne gui braucht)

wenn man es komfortabel machen will kann man mit sftpdrive (windows) 
oder sshfs (linux) ein netzlaufwerk verbinden

mit hilfe von einem vpn sollte auch vielles möglich sein

von Markus L. (lucky79)


Lesenswert?

Matthias wrote:
> Nehmen wir mal an, man hat eine Steuerung und diese will man an einem
> anderen Ort Überwachen, bzw. Daten auslesen. Auf der einen Seite steht
> ein PC, der mit der Steuerung und dem Internet verbunden ist. Auf der
> anderen Seite ist ein weiterer Rechner, der auch mit dem Internet
> verbunden ist.
> Wie bekommt man am besten Daten vom einem Rechner zum anderen? Ich
> könnte Delphi nutzen. Jemand eine Idee?

sagen wir mal so, es gibt sicherlich 100 verschiedene Möglichkeiten, das 
zu lösen...

Sag uns doch mal etwas genaueres:
  - Betriebssysteme?
  - solln die Daten auf Abfrage gesendet werden?
  - wie solln die Daten denn aufbereitet werden?

DynDNS is auf jedenfall erforderlich - sonst findest ja den "Server" 
nicht.

von Matthias (Gast)


Lesenswert?

Ich stelle mir das so vor,

beide Rechner hängen am Internet.
Dort, wo der Rechner an der Steuerung hängt (Rechner 1), muss eine IP 
ermittelt werden. Diese wird entweder telefonisch übermittelt, oder wie 
Ihr schon gesagt habt, über dyndns. Dann kann der entfernte Rechner (2) 
die übermittelte Adresse "anpingen" oder irgendwie Daten holen. Die 
Anfrage kommt immer vom entfernten Rechner (2), also der, der nicht an 
der Steuerung hängt. Auf beiden Rechnern wird Win laufen. Mit Indy hatte 
ich schon mal eine PHP Seite mit Daten gefüllt, aber ansonsten habe ich 
mit Indy noch nichts gemacht.
Mich interessiert vor allen, welche Funktionen ich bein Indy nehmen 
kann. Vielleicht hat Indy auch ein Beispiel und ich weiß nur nicht, 
welches. Mit der Sicherheit sollte es keine Probleme geben, da immer nur 
binäre Pakete von 1-6 Bytes übertragen werden. Damit sollte man nichts 
anfangen können.
Ziel könnte es sein, dass man den Rechner 2 dann noch mit einer 
Visualisierungssteuerung verbindet, die sich dann über die Umwege der 2 
Rechner und Internet Daten von der ersten Steuerung holt. Eine direkte 
Verbindung der Steuerung übers Internet ist leider nicht möglich.
Das sind so meine Gedanken, wie es vielleicht gehen könnte.
Na dann werde ich mal die Indy Komponenten durchforsten, was sich so 
findet.
Mit Streams und Sockets habe ich leider noch nichts gemacht.

von Hans (Gast)


Lesenswert?

Die Steuerung könnte die Daten auch in einer Datei oder einer Datenbank 
auf einem Webspace (Homepage) ablegen. Andere Rechner können sie dann 
dort abrufen. Man muss dann nicht dauernd mit der Maschine verbunden 
sein.

von Markus L. (lucky79)


Lesenswert?

Hans wrote:
> Die Steuerung könnte die Daten auch in einer Datei oder einer Datenbank
> auf einem Webspace (Homepage) ablegen. Andere Rechner können sie dann
> dort abrufen. Man muss dann nicht dauernd mit der Maschine verbunden
> sein.
viel zu aufwendig...
außerdem will er ja auf Abruf die Daten...


> Mit Indy hatte ich schon mal eine PHP Seite mit Daten gefüllt,
> aber ansonsten habe ich mit Indy noch nichts gemacht.
das würd ich als Ansatz sehen...
Ich chreib mal ein kurzes Szenario:
Der Rechner, an dem die Steuerung hängt (ich sag ab jetzt Server dazu), 
bekommt nen Apache, der auch SSL kann und natürlich PHP. Weiters bekommt 
der Server auch noch ne Firewall und DynDNS. Es befindet sich ein 
Konsolenprogramm (ja sowas gibts auch auf Win ;-)), das die 
Kommunikation mit der Steuerung macht und dann nach STDOUT die Parameter 
schreibt, auf der Platte, das per system(); ausgeführt wird. Danach 
macht PHP schon den Rest! Es gibt nur eine kurze Verzögerung bei der 
Datenabfrage.

Hab sowas am Laufen...
Wetterstation --> RS232 --> PC -- -- -- Internet -- --> Display(PC)

Grüße,

Markus

von Ernst Maurer (Gast)


Lesenswert?

Nutze doch ganz einfach Team Viewer, von der Fernwartung, bis zu Daten 
übertragen ist alles möglich. VPN Tunneln und den fremden PC so 
bediehnen als sitzt mann vor Ihm. Na ja, CD oder DVD wechseln wird ein 
Problem, auch kann mann kein Papier in den anderen Drucker einlegen.
Aber das Tool ist für Privatanwender kostenlos, und einfach vielfältig, 
es geht sogar durch Firewalls hindurch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.