首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
协程客户端发送消息后调用recv方法返回错误:Connection reset by peer
### 问题描述 协程客户端发送消息后调用recv方法返回错误:Connection reset by peer ### Swoole版本,PHP版本,以及操作系统版本信息 PHP 7.x swoole 最新 ### 相关代码 ```php private function clientStart() { $client = new \Swoole\Coroutine\Client(SWOOLE_SOCK_TCP | SWOOLE_KEEP); go(function () use ($client) { if (!$client->connect( self::HOST, self::PORT , 0.5)) { echo "connect failed. Error: {$client->errCode}\n"; } if($client->isConnected()){ $send = $client->send( '1111' ); if(!$send){ echo "send error:".$client->errCode.":".socket_strerror($client->errCode)."\n";; } var_dump($client); echo "error1:".$client->errCode.":".socket_strerror($client->errCode)."\n";; echo "peer = ".print_r($client->getpeername())."\n"; $data = $client->recv(); echo "error2:".$client->errCode.":".socket_strerror($client->errCode)."\n";; } }); } ``` 输出如下: ``` object(Swoole\Coroutine\Client)#7 (7) { ["errCode"]=> int(0) ["errMsg"]=> string(0) "" ["fd"]=> int(4) ["socket":"Swoole\Coroutine\Client":private]=> NULL ["type"]=> int(4097) ["setting"]=> NULL ["connected"]=> bool(true) } error1:0:Success Array ( [host] => 183.230.96.94 [address] => 183.230.96.94 [port] => 17890 ) peer = 1 error2:104:Connection reset by peer ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待正常接收服务端消息 代码在TP3.2框架下有这个问题,在框架外执行没有问题,这个问题的可能原因是什么?麻烦帮忙指点一下
发布于5年前 · 13 次浏览 · 来自
提问
nick1
### 问题描述 协程客户端发送消息后调用recv方法返回错误:Connection reset by peer ### Swoole版本,PHP版本,以及操作系统版本信息 PHP 7.x swoole 最新 ### 相关代码 ```php private function clientStart() { $client = new \Swoole\Coroutine\Client(SWOOLE_SOCK_TCP | SWOOLE_KEEP); go(function () use ($client) { if (!$client->connect( self::HOST, self::PORT , 0.5)) { echo "connect failed. Error: {$client->errCode}\n"; } if($client->isConnected()){ $send = $client->send( '1111' ); if(!$send){ echo "send error:".$client->errCode.":".socket_strerror($client->errCode)."\n";; } var_dump($client); echo "error1:".$client->errCode.":".socket_strerror($client->errCode)."\n";; echo "peer = ".print_r($client->getpeername())."\n"; $data = $client->recv(); echo "error2:".$client->errCode.":".socket_strerror($client->errCode)."\n";; } }); } ``` 输出如下: ``` object(Swoole\Coroutine\Client)#7 (7) { ["errCode"]=> int(0) ["errMsg"]=> string(0) "" ["fd"]=> int(4) ["socket":"Swoole\Coroutine\Client":private]=> NULL ["type"]=> int(4097) ["setting"]=> NULL ["connected"]=> bool(true) } error1:0:Success Array ( [host] => 183.230.96.94 [address] => 183.230.96.94 [port] => 17890 ) peer = 1 error2:104:Connection reset by peer ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待正常接收服务端消息 代码在TP3.2框架下有这个问题,在框架外执行没有问题,这个问题的可能原因是什么?麻烦帮忙指点一下
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2020-09-28
鲁飞
参考swoole文档相关内容:https://wiki.swoole.com/#/server/setting?id=backlog
赞
0
回复
2020-09-28
nick1
回复
鲁飞
看文档意思,是服务端的问题是吗?但是实际场景这个应该不是服务端问题,服务端是第三方提供的已经在生产环境稳定运行的服务端。
赞
0
回复