电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Linuxsocket错误分析VIP免费

Linuxsocket错误分析_第1页
1/7
Linuxsocket错误分析_第2页
2/7
Linuxsocket错误分析_第3页
3/7
Linux网络编程socket 错误分析 socket 错误码: EINTR: 4 阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。 只能针对阻塞模式的socket。读,写阻塞的socket 时,-1 返回,错误号为INTR。另外,如果出现EINTR 即errno 为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。 ETIMEOUT:110 1、操作超时。一般设置了发送接收超时,遇到网络繁忙的情况,就会遇到这种错误。 2、服务器做了读数据做了超时限制,读时发生了超时。 3、错误被描述为“connect time out”,即“连接超时”,这种情况一般发生在服务器主机崩溃。此时客户 TCP 将在一定时间内(依具体实现)持续重发数据分节,试图从服务 TCP 获得一个 ACK 分节。当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回 ETIMEDOUT 错误。如果某个中间路由器判定该服务器主机已经不可达,则一般会响应“destination unreachable”-“目的地不可达”的ICMP 消息,相应的客户进程返回的错误是 EHOSTUNREACH 或 ENETUNREACH。当服务器重新启动后,由于 TCP 状态丢失,之前所有的连接信息也不存在了,此时对于客户端发来请求将回应 RST。如果客户进程对检测服务器主机是否崩溃很有必要,要求即使客户进程不主动发送数据也能检测出来,那么需要使用其它技术,如配置 SO_KEEPALIVE Socket 选项,或实现某些心跳函数。 EAGAIN: 1、Send 返回值小于要发送的数据数目,会返回EAGAIN 和 EINTR。 2、recv 返回值小于请求的长度时说明缓冲区已经没有可读数据,但再读不一定会触发EAGAIN,有可能返回0 表示 TCP 连接已被关闭。 3、当 socket 是非阻塞时,如返回此错误,表示写缓冲队列已满,可以做延时后再重试. 4、在 Linux进行非阻塞的socket 接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),表明在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏 socket 的同步,不用管它,下次循环接着 recv 就可以。对非阻塞socket 而言,EAGAIN 不是一种错误。 EPIPE: 1、Socket 关闭,但是 socket 号并没有置-1。继续在此 socket 上进行 send 和 recv,就会返回这种错误。这个错误会引发SIGPIPE 信号,系统会将产生此 EPIPE 错误的进程杀死。所以,一般在网络程...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Linuxsocket错误分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部