原帖由 lsupper 于 2009-5-23 12:29 发表
TCP发送失败,就返回结果 -1了,你就再重发吧,关于TCP底层自己的,把缓冲区的发过去,是它自己解决,应用曾只要判断send的返回值吧
原帖由 benjiam 于 2009-5-23 13:48 发表
红蓝军问题。 最后一次确认永远没办法确认是否成功送达
解决方案
1 应用层要自己设计协议来确认消息发送成功。
2 1问1答 1确认就可以了
原帖由 benjiam 于 2009-5-24 22:46 发表
其实 还是有很多细节没有仔细研究过
a b 建立连接 3步握手完成
非阻塞模式
a send 100 字节
如果b 没有返回ack 包, 也不返回rst . a 机器的反应。 是返回100 还是阻塞?
返回是等待b 返回ack, 还 ...
原帖由 urapple 于 2009-5-25 08:30 发表
不对,阻塞方式tcp send如果返回成功,就是成功了,失败,基本上就是网络出问题了。别管什么发送缓冲还是应用程序。
tcp本身的send就有recv过程,只有收到确认,才会继续发送下面的数据,否则如果发送缓冲满, ...
原帖由 cwinex 于 2009-5-25 12:37 发表
只要TCP连接不断,底层一定能帮你发送过去。
对于一个TCP连接,你发送完毕以后,要么要收回复,要么要继续发送,从不会什么都不做了吧。
因此TCP连接上的错误,一定能通过随后的read/write获知。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |