Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
String senden über TCP/IP [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
String senden über TCP/IP


 
sdx
26-10-2005, 14:30 
 
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.

 
sdx
26-10-2005, 15:00 
 
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?

 
sdx
26-10-2005, 15:06 
 
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?

 
sdx
26-10-2005, 16:47 
 
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).

 
sdx
27-10-2005, 10:46 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:33 Uhr.