| | | | |
| | ||
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Zitat:
Lies mal ein bischen im Internet, wie Sockets funktionieren, was blocking bedeutet und wo der Unterschied zwischen den non-blocking und den blocking sockets liegt... z.B. http://www.scottklement.com/rpg/sock...nblocking.html
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. | |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Richtig erkannt. Das Kommando wurde gesendet, es blockiert ja auch nicht die Zeile "fputs" oder "fwrite", sondern "fread": Du liest im 1000-Byte-Häppchen - es müssen also immer ganze Vielfache dieser Menge gesendet werden, anderenfalls blockiert dein Script, sobald es noch nicht genügend Daten (bzw. EOL) empfangen hat. Mit non-blocking Sockets umgehst du nun diese Problematik, handelst dir aber neue ein. Ein non-blocking Socket kehrt sofort nach dem Aufruf zurück zum Aufrufer und meldet einen Status, anhand dessen entschieden werden kann, wie es weiter gehen muss (ein sog. "Peek"). In deinem Beispiel würde fread() sofort zurückkehren und dir 0-1000 Byte liefern. Du musst nun solange lesen, bis alle Daten emfpangen wurden (wann du das machst, ist egal, deswegen kehrt die Funktion auch sofort zurück - hast du noch nicht alle Daten empfangen, wurden sie vielleicht noch nicht vollständig übertragen, du kannst also derzeit was anderes machen, oder erneut fread() aufrufen, um zu sehen ob weitere Daten vorliegen). Das ganze Thema ist ziemlich komplex und nicht unbedingt trivial. Blocking sockets lassen sich so einfach programmieren, weil das Lesen auf die Daten "wartet", wohingegen du bei non-blocking Sockets die asynchrone Natur selber implementieren musst. Beispiel für ein Non-Blocking Read Script (ungetestet) PHP-Code:
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
| | ||
| Neuer Benutzer Registriert seit: 25.05.2011
Beiträge: 14
PHP-Kenntnisse: Fortgeschritten ![]() | @eagle275 EDIT (jetzt irrelevant): Zitat:
Wenn ich mit der Windows Console und "telnet localhost" verbinde funktioniert das auch einwandfrei! Geändert von MTN (27.05.2011 um 18:06 Uhr). | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Datenbank über Notepad bearbeiten. | Anthony70 | PHP Einsteiger | 4 | 21.04.2011 21:43 |
| VB-Prog mit COM-Objekt über shell_exec aufgerufen bricht ab | emtiqor | PHP-Fortgeschrittene | 5 | 04.04.2011 20:17 |
| [Erledigt] Summation über Unterabfragen - Mysql | jume | Datenbanken | 20 | 30.05.2010 09:58 |
| AD zugriff über PHP | jared566 | PHP Tipps 2010 | 6 | 12.05.2010 11:32 |
| Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB | Datenbanken | 4 | 09.02.2006 11:04 | |
| [Erledigt] Problem mit dem Füllen einer Tabelle über Formular | PHP Tipps 2006 | 18 | 10.01.2006 12:51 | |
| Remote öffnen von txt über php? | PHP-Fortgeschrittene | 6 | 08.11.2005 22:58 | |
| Grafik über mehrere Zellen einer Tabelle | neodrei | HTML, Usability und Barrierefreiheit | 9 | 18.08.2005 19:26 |
| PHP und telnet | php1 | PHP-Fortgeschrittene | 8 | 19.04.2005 16:45 |
| Javascript über Javascript erstellen | HTML, Usability und Barrierefreiheit | 2 | 19.11.2004 18:02 | |
| DB-backup über Script | Datenbanken | 6 | 22.10.2004 11:23 | |
| Zugang über dyndns | Datenbanken | 0 | 12.10.2004 15:31 | |
| Seitenauswahl über Domain | PHP Tipps 2004 | 4 | 10.09.2004 13:09 | |
| [Erledigt] Daten in DB schreiben (über Schleife) | PHP Tipps 2004 | 4 | 21.07.2004 08:52 | |
| Umleitung über Meta-Angaben im Header abhängig vom Host | PHP Tipps 2004 | 7 | 14.06.2004 12:34 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| phptelnet script conn1 and conn2, php \non blocking sockets\ \kein eof\, php socket lesen \kein eof\, php telnet, telnet header 0xff |