Archiv verlassen und diese Seite im Standarddesign anzeigen : String senden über TCP/IP
Hallo, ich habe auf meinem Rechner ein Programm laufen mit dem ich eine TCP/IP Verbindung herstellen will, wie z.B. mit Telnet.
Ich brauche einen einfachen Script mit dem ich Strings zu meinem PC schicken kann.
Der Port ist freigegeben.
Kennt sich da jemand aus? Es muss nichts kompliziertes sein.
Ich habe was über "Socket" gelesen, ich versteh es aber nicht wirklich.
Danke, MfG sdx
Sternkinder 26-10-2005, 14:34 Was verstehst du denn nicht, im PHP Manual ist doch alles bestens erklärt.
onemorenerd 26-10-2005, 14:35 <?php
$fp = fsockopen($deineIP, $deinPort, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
fwrite($fp, $deinString);
// folgende Zeile optional - Antwort ausgeben
while (!feof($fp)) echo fgets($fp, 128);
fclose($fp);
}
?>
Alle Variablen, die $deinXY heißen, mußt du vorher mit deinen Werten belegen.
Kann man alles nachlesen auf http://php.net/fsockopen, da gibt es auch einige sehr lehrreiche Beispiele.
Das hab ich ausprobiert, da kommt aber ein Fehler.
Warum wird die Verbindung nicht hergestellt? Der Server läuft, über Telnet funzt das.
<?php
$fp = fsockopen("11.111.111.11", 6666, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
fwrite($fp, "TEST");
// folgende Zeile optional - Antwort ausgeben
while (!feof($fp)) echo fgets($fp, 128);
fclose($fp);
}
?>
Fehler:
Warning: fsockopen() [function.fsockopen]: unable to connect to 11.111.111.11:6666 (Connection timed out) in /is/htdocs/wp1014504_4C13P5UEJZ/www/test.php on line 4
Connection timed out (110)
Sternkinder 26-10-2005, 15:02 Stimmt die IP auch wirklich?
Ja, die IP stimmt, die werd ich aber nicht veröffentlichen.
onemorenerd 26-10-2005, 16:16 Schon mit größerem Timeout versucht?
(Achtung, evtl. muß max_execution_time angepaßt werden.)
Und mit "udp://<IP>" auch schon?
Wenn das nichts bringt, lass deine Firewall Port 6666 beobachten, so daß du entweder eine Meldung wg. Incoming Traffic bekommst oder die Verbindungen geloggt werden. Prüfe so, ob die Verbindung überhaupt initialisiert wird. (Bei UDP wäre sie damit auch schon beendet ...)
Was lauscht bei dir eigentlich auf Port 6666?
Mit UDP davor kommt zwar keine Fehlermeldung aber da kommt auch nichts an.
Mein Testprogramm benutzt Port 6666 .
Was kann es noch sein?
onemorenerd 26-10-2005, 19:35 Original geschrieben von sdx
Mit UDP davor kommt zwar keine Fehlermeldung aber da kommt auch nichts an.
Die Daten verlassen also den Server ... in Richtung des Hosts dessen IP du angibst. Wenn das Internet sie nicht verschluckt (möglich, kann aber durch wiederholtes Testen nahezu ausgeschlossen werden), kommen sie auch bei dir an.
Mein Testprogramm benutzt Port 6666.
Das sagtest du bereits. Aber was macht das Programm mit eingehenden Daten bzw. woran erkennst du, dass nichts ankommt? Vermutlich trifft der String schon ein, nur dein Programm läßt dich etwas anderes glauben.
Mit TCP wirds wohl gescheitert sein, weil dein Programm die Verbindung nicht annehmen wollte/konnte (kein ACK bis Timeout -> Fehlermeldung von fsockopen).
Was müsste den so ein Server Programm machen?
Hat jemand von euch so etwas schon programmiert?
Mein Prog. wurde in Delphi programmiert.
Oder gibts da irgendwelche freeware?
onemorenerd 27-10-2005, 11:23 Delphi ist für mich ein böhmisches Dorf, da kann ich dir nichts konkretes sagen. Aber googeln kann ich: http://www.dsdt.info/tutorials/winsocket/
Allgemein mußt du ein Programm schreiben/haben und starten, dass einen Socket (IP+Port) öffnet und dann darauf lauscht (Listen-Modus). Kommen Daten an, mußt du sie verarbeiten und ggf. dem Absender antworten.
|
-
- |