Thread TCP Client - Socket lesen und schliessen
(29 answers)
Opened by snarf at 2004-08-18 19:50
Ja stimmt, beim Senden hat man oft nicht die Probleme. Das sind dann schon eher die Extremfälle.
Beim Empfang bekommst Du die Bytes in den von Dir angegebenen Scalar und die length-Funktion sagt Dir, wie viele Bytes drin sind. Ein Denkfehler ist manchmal, daß man erwartet, daß beim Empfang die angeforderten Bytes mit einem Mal kommen. Wenn das Paket zu groß wird, wird es aufgeteilt. Du forderst nur 1 Byte an, da kann das also nicht passieren, hopp oder top also. Du hast bei Select bei der can_read-Methode keinen Timeout angegeben, also wird can_read blockieren, bis die Antwort kommt. Also macht es keinen Sinn, die Länge der Bytes zu testen. Wenn can_read zurückkommt, Du hast Select nur 1 Handle zugewiesen, ist das Byte auch da. Übrigens funktioniert unter Windows IO::Select vorzüglich, da gibt es eher mal Probleme mit fork. Nur darf man bei Windows Select nicht auf Nicht-Socket-Handles anwenden, wie z.B. STDIN, ... .\n\n <!--EDIT|steffenw|1093034954--> $SIG{USER} = sub {love 'Perl' or die};
|