You are here: Re: [PHP] Socket connection reset by pear « PHP « IT news, forums, messages
Re: [PHP] Socket connection reset by pear

Posted by Martn Marqus on 10/19/05 11:15

El Vie 06 May 2005 01:50, Richard Lynch escribió:
> On Thu, May 5, 2005 5:20 am, Martín Marqués said:
> > I'm trying to build some communication aside of the server thin client
> > stuff,
> > with a socket daemon and a socket client.
> >
> > The daemon is the same that everybody can find in the PHP docs (example
> > 1).
> > The client simply opens a connection to the daemon and writes data using
> > the
> > socket Object from PEAR (last stable version). The problem is that it
> > fails
> > to make a socket_read() with this message (on the daemon side):
> >
> > Warning: socket_read() unable to read from socket [54]: Connection reset
> > by
> > peer
> > in
> > /space/home/martin/programacion/siprebi-1.2/ext/impresion/printSocket.php
> > on line 42
> > socket_read() failed: reason: Operation not permitted
> >
> >
> > If I open a telnet conection to the daemon, everything works like a
> > charme. It
> > writes and quits OK.
> >
> > What can be going wrong?
>
> Operation not permitted would make me guess you've got a user read/write
> permissions problem.

Permissions where? On the file that is been executed? Everything looks OK.

> When you open that telnet connection, are you logged in as the same user
> as the PHP user that is running the client script?
>
> I'm guessing not...
>
> You have to clarify, for yourself, which user is doing what when to which
> files/devices/sockets, and what chown permissions are in effect.
>
> That generally makes you go "Duh" and fix the problem pretty quick.

Well not really. I just tried running both scripts (daemon and client) from
the same machine, both as root, and I still get a "connection reset by pear".

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
-----------------------------------------------------------------

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация