sendto() 返回>0,说明数据已经被发到网络上了嘛?

bladeboy 2003-08-18 04:21:27
raw packet socket

sendto()返回大于0 ,似乎并不说明包已经被发到网络上了,

只是说明包已经被放到发送队列里(队列有空,默认好像是30个包)

有没有办法等包已经被发到网络上然后再让sendto返回?
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
blh 2003-08-19
  • 打赏
  • 举报
回复
用ioctl将缓冲区设置为0
判断数据是否发送,不应该只限定于sendto调用,应该与你的消息事务有关,比如对端给你返回一个相应就表示你把消息发送出去了,否制,发送失败
daehappy 2003-08-18
  • 打赏
  • 举报
回复
sendto返回大于零说明数据已经送到系统缓冲区。但是UDP的机制似乎不可能得知是否已经发送到网络上去。谁叫UDP是不保险的呢?

不过UDP也可以使用connect函数以增加质量的, 参考以下程序,很不错的!

http://www.fanqiang.com/a4/b7/20011023/1000001500.html

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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