Node.js错误ECONNRESET

时间:2015-05-03 15:26:09

标签: javascript php node.js sockets

我的客户端(PHP)反复向Node.js net.Server发送消息,并出现意外错误。

服务器的一部分:

socket.on('error',function(err){
    logger.emit('error',err);
});

[Error: write ECONNABORTED] code: 'ECONNABORTED', errno: 'ECONNABORTED', syscall: 'write'

[Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' 

如果我逐个发送消息,我不会收到错误。

修改:发布client.php

if(isset($_GET['msg'])) {
    $sendmessage = $_GET['msg'];
    $host = "xxx.xxx.xx.xx";//server ip 
    $port = 3030;

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");

    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);

    $result = socket_connect($socket, $host, $port) or die("Couldn't connect to server: [$errorcode] $errormsg");

    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 60, "usec" => 0));

    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");

    $serverresponse = socket_read($socket, 1024,PHP_NORMAL_READ) or die("Could not read server response: [$errorcode] $errormsg"); 

    echo $serverresponse;
}

1 个答案:

答案 0 :(得分:1)

由于PHP客户端关闭了TCP连接,因此抛出了您得到的错误,因此我猜您在客户端遇到了问题。

编辑:

使用它构建普通的TCP套接字客户端并不是一项非常简单的任务。如果你很幸运,你会错过socket_close($sock);php.net Sockets Examples)。

我真的建议只使用HTTP协议:

这将使一切变得简单,并且开箱即用。