OK, I found the error. Aparently, the message that I was sending didn't have a newline at the end, and so socket_read on the other end failed to complete it's task, and finds it self with a conection reset by pear when the client tries to write something else. I found out when looking at the Net_Socket Object in PEAR, and say that the was a write() and a writeLine() method in the class, an after trying it out, it worked! Sorry for the noise. :-) El Vie 06 May 2005 16:48, Martín Marqués escribió: > El Vie 06 May 2005 01:50, Richard Lynch escribió: > > The client code is this: > > <?php > ini_set ("display_errors" , "On" ); > if (($socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { > echo "socket_create() failed: reason: " . socket_strerror ($socket) . > "\n"; > } > > $result = socket_connect($socket, '127.0.0.1', 9100); > var_dump($result); > $msg = "prueba de socket"; > > $res = socket_write($socket, $msg, strlen($msg)); > var_dump(socket_strerror(socket_last_error($socket))); > exit; > ?> > > The daemon code is like this: > > #!/usr/bin/php > <?php > ini_set ("display_errors" , "On" ); > > error_reporting(E_ALL); > > /* Allow the script to hang around waiting for connections. */ > set_time_limit(0); > > /* Turn on implicit output flushing so we see what we're getting > * as it comes in. */ > ob_implicit_flush(); > > $address = '127.0.0.1'; > $port = 9100; > > if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { > echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n"; > } > > if (($ret = socket_bind($sock, $address, $port)) < 0) { > echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n"; > } > > if (($ret = socket_listen($sock, 5)) < 0) { > echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n"; > } > > do { > if (($msgsock = socket_accept($sock)) < 0) { > echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . > "\n"; > break; > } > var_dump($msgsock); > do { > if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { > echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n"; > break 1; > } > if (!$buf = trim($buf)) { > continue; > } > if ($buf == 'quit') { > break; > } > if ($buf == 'shutdown') { > socket_close($msgsock); > break 2; > } > } while (true); > socket_close($msgsock); > } while (true); > > socket_close($sock); > ?> > > But when I try to connect with the PHP client (even executing it with CLI > interface) I get this message in the daemons output: > > > Warning: socket_read() unable to read from socket [54]: Connection reset by > peer in /root/printSocket.php on line 36 > socket_read() failed: reason: Operation not permitted > > > -- > 16:32:53 up 35 days, 1:01, 2 users, load average: 0.70, 0.52, 0.59 > ----------------------------------------------------------------- > Martín Marqués | select 'mmarques' || '@' || 'unl.edu.ar' > Centro de Telematica | DBA, Programador, Administrador > Universidad Nacional > del Litoral > ----------------------------------------------------------------- > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- 18:11:30 up 35 days, 2:40, 2 users, load average: 0.74, 0.72, 0.71 ----------------------------------------------------------------- Martín Marqués | select 'mmarques' || '@' || 'unl.edu.ar' Centro de Telematica | DBA, Programador, Administrador Universidad Nacional del Litoral ----------------------------------------------------------------- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php