![]() Mailinglisten-Archive |
Hi, ich habe eine Client - Server Verbindung mit php �ber ssh, die im LAN wunderbar funktioniert. Es k�nnen Strings z.B. mit strlen > 4000 �bertragen werden, da gibt es �berhaupt keine Probleme. Jetzt sollen damit zwei Rechner verbunden werden, die jeweils per DSL im Inet sind (z.B. in Berlin und M�nchen). Die �bertragung funktioniert an sich auch immer noch, nur dass �ber das Inet nicht mehr alle Daten �bertragen werden. 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. Ich habe keine Ahnung warum das im LAN funktioniert und �ber das Inet nicht. Die MTU kanns irgendwie nicht sein, denn die ist im LAN ja genauso gro� (1500 auf meinen Linux-Kisten wo es intern funktioniert). Es funktioniert z.B. auch, wenn der php-Server auf meinem root-Server l�uft (also permanente Verbindung + feste IP) und der Client von einer DSL-Einwahlverbindung kommt, hier werden auch alle Daten �bertragen. Nur wenn der php-Server auf einem Rechner l�uft, der per DSL angebunden ist, gibts diese Probleme. Ich hab mir schon die Finger wund gesucht, vielleicht hat ja jemand einen Tip - �bersehe ich vielleicht etwas wichtiges in Bezug auf Inet? Hab das hier gefunden(2. note): http://de.php.net/manual/en/function.stream-set-blocking.php Kann das aber irgendwie nicht auf mein Problem umw�lzen, denn im Client $r = array( $tunnel ); while ( 0 !== stream_select( $r, $w = null, $e = null, 0 ) ) ... ergibt: Warning: stream_select(): cannot represent a stream of type SSH2 Channel as a select()able descriptor in ... So ist grundlegend der Client aufgebaut: ... $connection = ssh2_connect( REMOTE_IP, SSH_PORT ); $auth_password = ssh2_auth_password( $connection, SSH_USER, SSH_PASS ); $tunnel = ssh2_tunnel( $connection, REMOTE_IP, IMOD_PORT ); $fwrites_success = fwrite( $tunnel, $string, strlen( $string ) ); ... Und so der Server: ... $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 { // MAXBUFSIZE = 20000 $buf = socket_read( $msgsock, MAXBUFSIZE ); ... } while ( true ) } while ( true ) ... Ich hoffe es kann mir da jemand nen Tip geben oder wei� sogar woran es liegt. PHP-4.4.4, libssh2-0.13, (pecl) ssh2 0.10 beta kommt zum Einsatz. Liegt der Fehler im client oder server? Wenn noch Infos fehlen, bitte nachfragen. Danke Andi
php::bar PHP Wiki - Listenarchive