当前位置: 技术问答>linux和unix
sendto() 返回>0,说明数据已经被发到网络上了嘛?
来源: 互联网 发布时间:2015-04-07
本文导语: raw packet socket sendto()返回大于0 ,似乎并不说明包已经被发到网络上了, 只是说明包已经被放到发送队列里(队列有空,默认好像是30个包) 有没有办法等包已经被发到网络上然后再让sendto返回? | ...
raw packet socket
sendto()返回大于0 ,似乎并不说明包已经被发到网络上了,
只是说明包已经被放到发送队列里(队列有空,默认好像是30个包)
有没有办法等包已经被发到网络上然后再让sendto返回?
sendto()返回大于0 ,似乎并不说明包已经被发到网络上了,
只是说明包已经被放到发送队列里(队列有空,默认好像是30个包)
有没有办法等包已经被发到网络上然后再让sendto返回?
|
用ioctl将缓冲区设置为0
判断数据是否发送,不应该只限定于sendto调用,应该与你的消息事务有关,比如对端给你返回一个相应就表示你把消息发送出去了,否制,发送失败
判断数据是否发送,不应该只限定于sendto调用,应该与你的消息事务有关,比如对端给你返回一个相应就表示你把消息发送出去了,否制,发送失败
|
sendto返回大于零说明数据已经送到系统缓冲区。但是UDP的机制似乎不可能得知是否已经发送到网络上去。谁叫UDP是不保险的呢?
不过UDP也可以使用connect函数以增加质量的, 参考以下程序,很不错的!
http://www.fanqiang.com/a4/b7/20011023/1000001500.html
不过UDP也可以使用connect函数以增加质量的, 参考以下程序,很不错的!
http://www.fanqiang.com/a4/b7/20011023/1000001500.html