首页 > 其他 > 详细

socket error汇总

时间:2014-03-13 20:53:46      阅读:436      评论:0      收藏:0      [点我收藏+]

1. socket.error: [Errno 98] Address already in use

socket 绑定的地址正在使用,常见于非友好关闭套接字。

解决办法:先关闭占用该地址的进程,假设端口号为10000,

  $ lsof -i:10000  

然后设置allow_reuse_address = True。

2. socket.error: [Errno 104] Connection reset by peer

如果调用 read() 从 TCP 连接上接收数据并返回 -1,且 errno 为 104(Connection reset by peer),这通常表示对端程序没有关闭 socket 就直接退出了 (例如 core dump )。

原因:对端程序没有显式调用 close() 来关闭一个 TCP 连接,那么在进程退出前,操作系统会释放相关的资源,包括关闭打开的文件描述符;但是这种情况下的关闭,只是发送一个 RESET 包就立刻结束,因此 read() 返回 -1 且 errno 为 104。而正常调用 close() 来关闭一个 socket, 会导致关闭连接的两次握手过程,这需要一点网络交互时间;这种情况下, read() 返回的是 0。

因此,在开发过程中,遇到这种现象,可以判断对端程序是不是除了问题。

socket error汇总,布布扣,bubuko.com

socket error汇总

原文:http://www.cnblogs.com/Amagasaki/p/3598030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!