问题描述
一个tcp连接的客户端和服务端,如果客户端一直不停的向服务端发送数据,而服务端的确认包中窗口越来越小,当服务端窗口为0时,客户端如果还继续一直调用异步数据发送会发生什么情况,应用程序会出错吗?还是异步发送函数会阻塞?
解决方案
解决方案二:
你先贴出这样一个程序来,贴出来看看!随便编一些词儿,让人觉得没有靠谱的问题。
解决方案三:
引用1楼sp1234的回复:
你先贴出这样一个程序来,贴出来看看!随便编一些词儿,让人觉得没有靠谱的问题。
这是服务端发送块Tokentoken=e.UserTokenasToken;Sockets=token.Connection;if(s.Available==0){//Setreturnbuffer.token.ProcessData(e);//对于接收到的数据进行处理,然后将发送数据放到发送缓冲区里面if(!s.SendAsync(e)){//Setthebuffertosendbacktotheclient.this.ProcessSend(e);}}服务端一直接收客户端发送的数据并回复,由于跑着跑着出现了客户端回的ACK里面窗口大小变为了0,所以我想问问在这种情况下如果再调用上面的s.sendAsync(e)会发生什么情况?是一直会缓存在网络发送缓冲区里面吗?
解决方案四:
引用2楼u012417552的回复:
服务端一直接收客户端发送的数据并回复,由于跑着跑着出现了客户端回的ACK里面窗口大小变为了0,所以我想问问在这种情况下如果再调用上面的s.sendAsync(e)会发生什么情况?是一直会缓存在网络发送缓冲区里面吗?
你继续跑不就知道会发生什么情况了?
时间: 2024-11-05 14:55:55