c语言read()返回-1,errno:Connection reset by peer

问题描述:服务器端执行完send()后调用close()关闭socket,然后exit()正常退出。客户端read()函数返回-1,errno104 :   Connection reset by peer,查了一下原因:

这意味着收到了TCP RST包,可以使用tcpdump + wireshark抓包分析,并且连接现在已经关闭,这种情况可能是因为对方崩溃,或者对方调用了close()函数。

解决方法:只要TCP栈的读缓冲里还有未读取(read)数据,则调用close时会直接向对端发送RST。服务器在调用close()函数前,调用shutdown(socket, 2),先关闭socket的读写功能,这时会向客户端发送FIN包,客户端收到FIN包时read()正常返回0,可以完全读取缓冲数据,问题解决。

close()和shutdown()的区别:

请参考:https://blog.csdn.net/xyyaiguozhe/article/details/30252559

Errno::ECONNRESET: Connection reset by peer是在使用gem安装软件包时可能遇到的错误。这个错误通常是由于网络连接问题导致的。引用和中提到了这个错误,并给出了解决方法。解决方法包括确保程序退出前关闭所有的网络连接,以及检测对方关闭连接后自己也关闭该连接。引用中也提到了在特定情况下可能会抛出这个异常。所以,如果遇到这个问题,可以尝试检查网络连接和关闭连接来解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [gem install报错ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno::ECONNRESET:](https://blog.csdn.net/cat_pp/article/details/76572774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [gem Errno::ECONNRESET: Connection reset by peer - SSL_connect](https://blog.csdn.net/himayan46/article/details/49611675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Connection reset by peer的常见原因及解决办法](https://blog.csdn.net/paopaohehe/article/details/108850130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值