Entwickler-Ecke

Internet / Netzwerk - Daten an einen Computer schicken.


Hux - Sa 27.01.07 16:16
Titel: Daten an einen Computer schicken.
Moin Leutz!

Ich glaub die Ueberschrift sagt schon alles...
Ich moechte ein Programm schreiben welches reagiert, wenn ich angepingt werde.
Ich habe es schon mit den Indy Komponenten versucht und auch schon danach gegooglet..., kam aber nichts raus ...

Danke schonma im Vorraus fuer Antworten.

Greetz, Hux.


Narses - Sa 27.01.07 17:30

Moin!

user profile iconHux hat folgendes geschrieben:
Ich moechte ein Programm schreiben welches reagiert, wenn ich angepingt werde.

Huah, das ist aber nicht einfach... :shock: Da bereits Teile des IP-Stacks (und damit das Betriebssystem) auf eine solche Anfrage antworten, wird dort wohl auch der ICMP-Port 0 gebunden sein (also ziemlich low-level). Ich habe keine Ahnung, wie man dem IP-Stack "erklärt", dass er nicht mehr für ICMP-Echo-Anfragen zuständig ist. :nixweiss:

Ansonsten könntest du noch entsprechende OS-Calls hooken oder per WinPCap nach ICMP-Paketen "lauschen" und das als Trigger verwenden... :? ob das mal den Aufwand lohnt... :?:

cu
Narses


Hux - Sa 27.01.07 19:57

Naja.., ok, glaub die Idee war doof *g
Ich wollte einfach nur eine Zahl/Buchstabe... o.Ä an einen anderen Computer schicken, damit das Programm dort reagiert und bestimmte Funktionen ausfuehrt..
Aber mit Ping wird das wohl nicht moeglich sein...
Gibt es denn andere Alternativen dazu ?

Greetz, Hux.


alias5000 - Sa 27.01.07 20:53

Haja, klar. Du hast die volle Auswahl
UDP, TCP,... ;)
Alle Netzwerkprogramme machen ja nichts anderes, als Daten zu verschicken ;)

Gruß
alias5000


Raffo - Sa 27.01.07 21:12

Ich denke, das Problem von Allem ist doch, das Du nicht unbedingt "durch" die Firewall kommst, es sei denn, du hast den ZIEL-Compi eh unter Kontrolle und machst Dir nen Port auf.

Nichtsdestotrotz ist es relativ einfach eine Client-Server Anwendung über TClientSocket und TServerSocket aufzubauen. (hier gibts massig Beispiele im Forum).


JayEff - Sa 27.01.07 21:28

user profile iconRaffo hat folgendes geschrieben:
Nichtsdestotrotz ist es relativ einfach eine Client-Server Anwendung über TClientSocket und TServerSocket aufzubauen. (hier gibts massig Beispiele im Forum).

Einfach, ja, aber sehr empfindlich. ich hab schon mal ein Beispielprogramm minimal abgewandelt, eine winzigkeit verändert, nichts, das für den übertragenden Code relevant gewesen wäre, schon passierte nix mehr. Hab die änderung rückgängig gemacht, nix. Seit dem hab ich keine lust mehr auf Netzwerkanwendungen.


Hux - Sa 27.01.07 21:59

user profile iconalias5000 hat folgendes geschrieben:
Haja, klar. Du hast die volle Auswahl
UDP, TCP,... ;)
Alle Netzwerkprogramme machen ja nichts anderes, als Daten zu verschicken ;)

Gruß
alias5000


Ja, ich wollte ma was mit TCP machen.
Aber funktioniert das auch uebers Internet oder nur im eigenen Netzwerk?
Ich hab mir schon die BasicClientServer Demo angeschaut und bei mir tut es.
Dann hab ich es an einem Kumpel verschickt und er konnte mir aber keine verbindung zu mir herstellen.

Greetz, Hux


Raffo - Sa 27.01.07 22:09

@JayEff, nur nicht aufgeben, wir haben alle mal klein angefangen. Nachdem ich vor 2 Jahren einen sehr guten Beispielcode (leider nicht hier im Forum) gefunden hatte, bin ich immer weiter gekommen (die Indy Beispiele selbst haben mir persönlich nicht weitergeholfen).

@alias5000
Erstmal am besten immer fürs eigene Netzwerk programmieren (Adresse "localhost" bzw. 127.0.0.1 = innerhalb des eigenen Computers, dann zum Clienten verbinden, wenn vorhanden). Bspw. ist meine lokale IP: 192.168.0.173, mein NetzCompi hat 192.168.0.223, also zu dem kann ich ohne Probleme verbinden.

Anders wirds, wenns ins Internet gehen soll. Wenn ich die IP meines Gegenübers habe und DIESER den Port (z.B. 5800) in seinem Router freigegeben hat, klappts auf Anhieb auch mit ihm.

Klingt einfach - ist es aber nicht - weil viele Kompoenenten ineinander greifen müssen, aber machbar ist (fast) alles, siehe das bekannte Sykpe, das auch mit Delphi programmiert wurde (ok, hier ist der Trick, das die ja noch ihren Server als Helper einsetzen).


Hux - Sa 27.01.07 22:37

Ich habs jetzt mal so gemacht, dass das Serverprogramm die IP und den benutzten Port auf einen WebSprace hochlaedt und der Client es sich von dort dann runterlaedt und sich dann mit dem Server verbindet.

BTW...Kennt einer ein gutes Tutorial zu der idTCP Komponente, bzw. zu Indys allgemein?
Ich hab mir das von dsdt.info mal angeschaut aber weitergeholfen hat mir das nicht wirklich da dort alles sehr knapp beschrieben ist.

Greetz, Hux.


raziel - So 28.01.07 16:39

Huhu Hux :wave:

Da das Topic hier nun nicht mehr allzuviel mit einem Ping zu tun hat (eigentlich ja auch nie hatte :mrgreen:) wärs nett, wenn du den Titel anpassen könntest, dass andere auch wissen, worums hier eigentlich geht ;)

Vielen Dank,
raziel


basti_1984 - Mo 29.01.07 12:52

user profile iconraziel hat folgendes geschrieben:
Huhu Hux :wave:

Da das Topic hier nun nicht mehr allzuviel mit einem Ping zu tun hat (eigentlich ja auch nie hatte :mrgreen:) wärs nett, wenn du den Titel anpassen könntest, dass andere auch wissen, worums hier eigentlich geht ;)

Vielen Dank,
raziel


Hallo du solltest vielleicht erwähnen, mit welchem System du arbeiten möchtest. Linux / Windows, des weiteren solltest du bedenken, je nach größe der Pakete diie du ins netz schickst dein traffic ziemlich hoch geht und somit eine verbindung zu einem anderen rechner / bzw. ins internet sehr langsam werden kann.

schreib mal was das program genau machen soll. am einfachsten wäre es dein programm übers netzwerk zu starten und ihm einige parameter zu übergeben.


Hux - Mo 29.01.07 16:31

Hallo !

Auf dem Computer auf dem es ausgefuehrt werden soll, ist Windows 98 installiert.
Das Programm soll Zahlen o.Ä von einem anderen Computer erhalten und diese dann auswerten.
Die Pakete die ich ins Internet schicke werden sicherlich nicht sehr groß sein da es nur eine Zahl ist (Also 1 Byte).

Greetz, Hux.


Narses - Mo 29.01.07 16:49

Moin!

user profile iconHux hat folgendes geschrieben:
Ich hab mir schon die BasicClientServer Demo angeschaut und bei mir tut es.

Meinst du das hier [http://www.delphi-library.de/topic_Minimaler+LANInternetChat+mit+TServerTClientSocket_60744.html]? ;) Oder was anderes?

user profile iconHux hat folgendes geschrieben:
Dann hab ich es an einem Kumpel verschickt und er konnte mir aber keine verbindung zu mir herstellen.

Sofern du das gelinkte Tut meinste, dann bist du entweder am Router-Port-Forwarding oder an der Firewall des Server-Computers gescheitert. Also: zum Test Firewall auf dem Server-PC deaktivieren (oder eben nur den Port freigeben) und - falls ein Router im Einsatz ist - in der Anleitung nachlesen, wie man ein Portforwarding [http://www.delphi-library.de/topic_Portforwarding++Eine+kleine+Einfuehrung_80904.html] (heißt manchmal auch "virtual Server") einrichtet. Dann gibt es eigentlich keinen Grund mehr, warum das nicht klappen sollte. ;)

cu
Narses


Raffo - Mo 29.01.07 16:52

Wenn Dir die Firewall nix ausmacht, dann versuch doch einfach mal die Indy Demos (falls vorhanden?) - da gibts jedenfalls einfache Client-Server Beispiele. Ansonsten würde ich Dir raten, eben nach diesem Stichwort (Client Server) hier im Forum zu suchen.