我的客户端 (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;
}
最佳答案
您收到的错误是由于 PHP 客户端关闭了 TCP 连接而引发的,所以我猜您的客户端出现了问题。
编辑:
用它构建一个普通的 TCP 套接字客户端并不是一个非常简单的任务。如果幸运的话,您只是缺少 socket_close($sock);
( php.net Sockets Examples )。
我真的建议只使用 HTTP 协议(protocol):
- 使用 PHP
HttpRequest
( php.net HttpRequest ) - 使用 NodeJS
http
库 ( Blog post on using nodejs http lib )
这将使一切变得更加简单,并且几乎开箱即用。
关于javascript - Node.js 错误 ECONNRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015610/