调用BeginSend后,怎样将缓冲区发送出去啊?

//将缓冲区的内容异步发送出去,委托回调函数EndSendFile()在后面sock.BeginSend(buffer,0,size,SocketFlags.None,n... //将缓冲区的内容异步发送出去,委托回调函数EndSendFile()在后面
sock.BeginSend(buffer, 0, size, SocketFlags.None,
new AsyncCallback(EndSendFile), null);
这句代码实际上是缓冲了要发送的数据,如果客户端没有及时接收(如客户端卡死.....);则数据将一直在缓冲区中;
只有当下一次调用sock.BeginSend,缓冲队列中的首个数据才会向外发送!并且调用一次BeginSend,缓冲队列将发送出去1个数据,但是缓冲队列将新进1个数据;
随着客户端的不稳定,缓冲队列将会越来越大!怎样将这个缓冲队列发送出去啊?
调用一次BeginSend,缓冲队列将尝试发送1个数据【不一定能发得出去】,但是缓冲队列将新进1个数据;
展开
 我来答
youbl
2013-10-17 · TA获得超过2510个赞
知道大有可为答主
回答量:1844
采纳率:62%
帮助的人:1677万
展开全部
更多追问追答
追问

这就是上面的回调函数里面的,调用了EndSend;但是这样不行,客户端没有及时接收的时,缓冲队列中的数据并不会自动尝试发送!

      只有当下一次调用BeginSend时,缓冲队列将尝试发送1个数据【不一定能发得出去】,但是缓冲队列将新进1个数据;

随着客户端的不稳定,缓冲队列将会越来越大!有其他办法尝试发送缓冲队列中的数据没?

追答
你意思是说,如果另一端没有主动去Recieve接收,数据不会发送?
当下一次调用时,另一端会接收数据?

你可以再参考下
http://social.msdn.microsoft.com/Forums/wpapps/zh-CN/6191120e-4352-4487-a7c1-7ac4150dd059/socket-beginsend-
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式