serversocket 如何确保数据已全部发出,或收到

我用serversocket写通信程序发送和接收数据,以发送为例,我循环调用sendbuf发送数据,程序不间断就把数据发完了,但由于是用的3G网络,客户端收到数据较慢,也... 我用serversocket写通信程序发送和接收数据,以发送为例,我循环调用sendbuf发送数据,程序不间断就把数据发完了,但由于是用的3G网络,客户端收到数据较慢,也许刚收到一包数据,服务端已经发出10包甚至更多了,在循环中已经把发送缓存替换掉了,最后还结束了当前scocket,导致客户端只能收到一小部分数据,我想的问是
怎么判断sendbuf是否已经真实的发送出去了,且缓存中没有数据
发送程序:
repeat
buflen := AData.Read(buf,512);
send(ASocket.SocketHandle,buf,buflen,0);
// 如何在这里确认已经成功发出
until buflen <=0
展开
 我来答
a921532841
2014-07-26
知道答主
回答量:40
采纳率:0%
帮助的人:14.1万
展开全部
你用的TCP协议还是UDP TCP协议的话 协议栈会给你发送过去。。send只是把你要发送的数据copy到系统 内核的缓冲区中 。send 函数只有copy的功能 没有发送的功能
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式