社区
Linux/Unix社区
帖子详情
在Linux下面,异步Socket,Send了以后,不判断返回值马上Close,会不会发送成功?
iorikingdom
2010-02-26 09:47:44
版本是
Redhat 4.3
Linux cbsserver-1 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:54:53 EST 2006 i686 i686 i386 GNU/Linux
好像我测试的结构是Send了以后,马上关闭的话,会出问题,发送好像不完整,不知道是不是事实
...全文
915
13
打赏
收藏
在Linux下面,异步Socket,Send了以后,不判断返回值马上Close,会不会发送成功?
版本是 Redhat 4.3 Linux cbsserver-1 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:54:53 EST 2006 i686 i686 i386 GNU/Linux 好像我测试的结构是Send了以后,马上关闭的话,会出问题,发送好像不完整,不知道是不是事实
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lxb_champagne
2010-03-12
打赏
举报
回复
我做一个SuSE的服务端程序,与Windows Mobile的手机通讯。
我在服务端Send之后,马上Close了,结果手机有时候能接收到消息,有时候不能接收到消息。
liangchencf
2010-03-08
打赏
举报
回复
调用Send后必须要判断返回值,不管是阻塞模式还是非阻塞模式。
风声边界
2010-03-07
打赏
举报
回复
引用 2 楼 feiyinzilgd 的回复:
应该是LS说的这个道理。
一般都会监测这个返回值的。
对于非堵塞的socket send函数的返回值是不是与堵塞socket的send返回值一致哪?(直到数据写入到缓冲区才返回)
有人说,非堵塞 recv时如果没有数据可读立即返回,如果有数据可读的话同堵塞的socket recv就一样了
是这样不?
leemeng0x61
2010-03-04
打赏
举报
回复
楼上是你太不厚道了,占用别人的帖子问问题
smile89haha
2010-03-04
打赏
举报
回复
会用Linux的朋友:我在虚拟机下安装了Ubuntu,也装了wine,可是我要运行或安装windows下的软件怎么办呢?刚从windows转到Linux这边,所以都不怎么会啊!请教一下~~~~~~~~O(∩_∩)O谢谢
BuleRiver
2010-03-02
打赏
举报
回复
异步socket和非阻塞socket有什么不同?
在其他平台上,是否也有类似的概念和异同?
mymtom
2010-03-02
打赏
举报
回复
对TCP来说send成功,表示系统已将数据放入TCP发送缓冲区。
随后的close对发送缓冲区中残留数据的处理与SO_LINGER选项有关
http://www.cnblogs.com/rainbowzc/archive/2009/09/14/1566151.html
猫已经找不回了
2010-03-02
打赏
举报
回复
send操作成功,代表,数据已经存到发送方的缓冲区。
既然你连send的返回值都不判断,当然可能出错。
mymtom
2010-03-01
打赏
举报
回复
引用 4 楼 guosha 的回复:
看描述应该是Non-Blocking IO
也有可能是错误地设置了socket的linger选项
快乐田伯光
2010-02-26
打赏
举报
回复
看描述应该是Non-Blocking IO
blackbillow
2010-02-26
打赏
举报
回复
你确信你使用的是Asynchronous IO,还是Non-Blocking IO?
谭海燕
2010-02-26
打赏
举报
回复
应该是LS说的这个道理。
一般都会监测这个返回值的。
快乐田伯光
2010-02-26
打赏
举报
回复
send的动作是把数据拷到发送缓冲区,close动作会刷新该socket关联的发送缓冲区。如果你发一小块,然后close的话,应该是可以发送出去的,如果你频繁发送大数据,导致发送缓冲区满了的话,缓冲区已经没有空间可供数据拷贝,所以导致数据没有发送出去。
Linux
下
异步
socket
客户端
Linux
环境下,声明
以后
socket
客户端,接收来自server端的数据
linux
下
socket
服务器和客户端
异步
通信
我们知道用
socket
进行通信时,
发送
数据和接收数据所使用的recv/
send
函数
会
阻塞进程,只有收到或
发送
数据后才能
返回值
,导致是
socket
通信只能实现服务器和客户端交替收发数据,而使用select可以很好地解决这个问题。...
非阻塞
socket
之
send
的使用---
异步
send
(1)错误现象:在
发送
小量数据的时候没有问题,一次
发送
完毕。但是当
发送
1008046个字节的时候,由于数据较大,系统一次约
发送
46336个字符,但是时而
发送
成功
,时而中间断掉。现象是不稳定,并且返回Resource ...
linux
socket
异步
而在
异步
通讯交互中,两方可以任意
发送
消息,当有数据要接收时,
会
收到系统消息提示来接收数据,而
不
会
阻塞。在
Linux
下基于
socket
的
异步
通讯可以有多种方式,比较常用的有select方式、epoll方式和
异步
消息
Linux
·
socket
编程
Linux
socket
编程
Linux/Unix社区
23,116
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章