- 论坛徽章:
- 1
|
回复 4# zylthinking
"写超时是什么概念呢?
阻塞模式返回写超时应该是一个操作系统bug
非阻塞模式只会返回EAGAIN 或者 EWOULDBLOCK 之类, 所以也应该是bug
而且, 所谓超时, 自然要有时可以超, write 不带最大超时值, 超时从何说起?
如果是非阻塞, 返回EAGIN 之类, 只是发送缓冲无法在接收新的数据, 连接没有任何问题 "
-->错了。
写是有超时的概念,write()的时候只是将数据copy到内核缓冲区中,接着内核会发出这些数据,这个发出是有时间限制的。一般都是15分钟左右。
而且这个跟阻塞、非阻塞没有关系。
" 这个没有亲自验证, 不敢保证所说正确, 但一直收不到ack, TCP 本身的 重传定时器 应该会起作用, 因此 FIN 应该会重传。
理论上, 只要不是连接彻底断了, 连续发送的fin总会有某个ack能够回来的, 如果彻底断了, 自然有icmp 回来, 这时候应该是被动关闭了(???)
所以到底进不进time_wait 我不知道 "
-->
这个也错了。
不会连续发送fin的。有时间限制的。
当然我问得也妥当,应该为:
如果在write()的时候发生超时错误,此时close()还会经历四次握手的状态吗(即FIN_WIAT_1->FIN_WAIT_2->TIME_WAIT->CLOSED)? 理由? |
|