社区
Linux/Unix社区
帖子详情
sendto() 返回>0,说明数据已经被发到网络上了嘛?
bladeboy
2003-08-18 04:21:27
raw packet socket
sendto()返回大于0 ,似乎并不说明包已经被发到网络上了,
只是说明包已经被放到发送队列里(队列有空,默认好像是30个包)
有没有办法等包已经被发到网络上然后再让sendto返回?
...全文
178
2
打赏
收藏
sendto() 返回>0,说明数据已经被发到网络上了嘛?
raw packet socket sendto()返回大于0 ,似乎并不说明包已经被发到网络上了, 只是说明包已经被放到发送队列里(队列有空,默认好像是30个包) 有没有办法等包已经被发到网络上然后再让sendto返回?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
85-
网络
编程发送函数(
send
to)
函数原型: 头文件:#include < sys/types.h > 头文件:#include < sys/socket.h >...函数
说明
:
send
to() 用来将
数据
由指定的socket传给对方主机。 参数
说明
: s:已建好连接的socket,如果利用
动图图解!代码执行
send
成功后,
数据
就发出去了吗?
代码执行
send
成功后,
数据
就发出去了吗? 回答这个问题之前,需要了解什么是Socket 缓冲区。 Socket 缓冲区 什么是 socket 缓冲区 编程的时候,如果要跟某个IP建立连接,我们需要调用操作系统提供的 socket API。 ...
网络
函数
send
send
to recv recvfrom write read
1、
send
头文件 #include < sys/socket.h > ...ssize_t
send
(int s,const void *msg,size_t len,int flags);...参数
说明
...第二个参数指明一个存放应用程式要发送
数据
的...第四个参数一般置0。 函数
说明
...
send
to 和 recvfrom 浅析
成功则
返回
实际传送出去的字符数,失败
返回
-1,错误原因会存于errno 中。s: socket描述符;buf:UDP
数据
报缓存区(包含待发送
数据
);len: UDP
数据
报的长度;flags:调用方式标志位(一般设置为0);to: 指向...
阻塞模式和非阻塞模式下
send
、
send
to、recv、recvfrom的表现
首先需要
说明
的是,不管阻塞还是非阻塞,在发送时都会将
数据
从应用缓冲区拷贝到内核缓冲区(SO_RCVBUF选项声明,除非缓冲区大小为0)。 1、在阻塞模式下
send
操作将会等待所有
数据
均被拷贝到发送缓冲区后才会
返回
。
Linux/Unix社区
23,110
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章