如何判断对方是否成功接收到通过socket发送的信息?

zsgszy 2003-09-15 06:12:10
如何判断对方是否成功接收到通过socket发送的信息?
是不是通过发送函数的返回值来判断呢?
...全文
1988 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mwtmwt01 2003-09-16
  • 打赏
  • 举报
回复
包头定义接收包的大小,客户端在一个线程中收,接到的数据为包的大小时,回复一个包让服务端确认后发下一包,时实要用internet的函数测网络连接是否正常,一切OK
kof99th 2003-09-16
  • 打赏
  • 举报
回复
象tcp协议一样,对每次的数据传输发送确认,就是发ack包。超时重发。
thd111 2003-09-16
  • 打赏
  • 举报
回复
需要应用协议支持
HanZhu1 2003-09-16
  • 打赏
  • 举报
回复
对方接到后给个回复不就行了
zsgszy 2003-09-15
  • 打赏
  • 举报
回复
如果说发送函数返回值是成功的话,是不是就一定表示我发送的数据已经在接收方的缓冲区内?如果是的话,那我是否能通过在接收方设置一个接收server来不停的等待我的信息,来保证我的发送成功的消息一定能够得到处理?
athlonliu 2003-09-15
  • 打赏
  • 举报
回复
是的,通过客户端回复一个消息来确认,更加准确一点的话,可以回复收到的字节数
OnReceive()
{
...
unsigned int received=Receive(buff,len);
...
send(received,sizeof(unsigned int));

}
wflyfox 2003-09-15
  • 打赏
  • 举报
回复
接收到以后再发送一个信息到另一端,类试三次握手协议。
OnReceive()
{
Send(buff,len);
}
孤必有邻 2003-09-15
  • 打赏
  • 举报
回复
如果把完整的通讯过程划分为三部分:发送,传输,接收,那么发送只能保证前两个的可靠性,即数据到达对方主机的接收缓冲区,至于对方是否取出并处理,就不知道了。但是在程序没有故障的情况下,不会因为系统忙而丢失数据,当接收缓冲区满(因为来不及处理)时,发送会提示失败。
风龙-3 2003-09-15
  • 打赏
  • 举报
回复
发送函数的返回值只能表示系统成功,并不能保证你对端的应用正确接收了,有可能对端由于太忙,接受到,就直接扔掉。应该通过自己的应用协议来保证

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧