Mailinglisten-Archive |
Andi Voss schrieb: > Größer als 1499 strlen des zu übertragenen Strings geht nicht. > Der ankommende String wird einfach bei einer strlen von 1499 auf dem > empfangenden Server abgeschnitten bzw. es wird gar nicht erst mehr als > 1499 in den SSH-Tunnel durch fwrite geschrieben. > Liegt der Fehler im client oder server? Ich kann mir die Frage mittlerweile selber beantworten. Es lag am Server und an der allgemeinen Übertragungsgeschwindigkeit, die im Inet natürlich langsamer ist als im lokalen Lan. Daher hat der Server nicht lange genug auf Daten gewartet. Mit socket_set_option musste ich entsprechend eingreifen und den Server zum Warten zu bringen bzw. eine min. Buffer Größe zu lesen: > ... > $sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); > socket_setopt( $sock, SOL_SOCKET, SO_REUSEADDR, 1 ); > socket_set_block( $sock ); > $ret = socket_bind ( $sock, ADRESS, IMODD_PORT ); > $ret = socket_listen( $sock, 5 ); > do > { > $msgsock = socket_accept( $sock ); > do > { socket_set_option( $msgsock, SOL_SOCKET, SO_RCVTIMEO, array( "sec" => 0, "usec" => 800 ) ); socket_set_option( $msgsock, SOL_SOCKET, SO_RCVLOWAT, 7000 ); > // MAXBUFSIZE = 20000 > $buf = socket_read( $msgsock, MAXBUFSIZE ); > ... > } while ( true ) > } while ( true ) > ... Jetzt läuft wieder alles bestens. Vielleicht hilft es ja jemandem. Gruss Andi
php::bar PHP Wiki - Listenarchive