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?
das kommt natürlich darauf an, welche schnittstellen die steuerung zum pc vor ort hat
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.
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!
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.
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
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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.