socket发送与接收的困惑

xwffwx 2009-12-29 12:48:07
发送端发送1000字节,接收端发生FD_READ事件,假设这1000字节完整地一次性发送到了接收端
在事件处理中,用recv读出500字节即返回
此时发送端数据已发送完成,不再发新数据,
请问接收端是否还会产生FD_READ事件来提醒我还有500字节未处理
...全文
237 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwffwx 2010-02-28
  • 打赏
  • 举报
回复
现在看了一些资料,了解到UDP是基于消息的协议,TCP是基于流的协议,所以TCP的数据接收情况要复杂些,要自己实现消息边界的保护,自己已经在编程中考虑了自己目前所知的各种情况,做了一个类似vb的winsock控件,目前测试中,改日与大家分享
xwffwx 2010-02-28
  • 打赏
  • 举报
回复
帖子结晚了,不好意思各位
ligeqiang 2010-01-02
  • 打赏
  • 举报
回复
你用的是UDP的,后面的会丢弃掉。UDP的要么全收,要么一个字节都收不到!
xwffwx 2010-01-02
  • 打赏
  • 举报
回复
实践出真知,先以最复杂的情况来实现再说
joey_ 2010-01-02
  • 打赏
  • 举报
回复
沾包?
xwffwx 2010-01-02
  • 打赏
  • 举报
回复
楼上的,我用tcp,不是udp
xwffwx 2009-12-30
  • 打赏
  • 举报
回复
顶起来
xwffwx 2009-12-30
  • 打赏
  • 举报
回复
是吗?看来接收数据还要考虑很多的问题
极端的情况是包长度信息都被分拆在前后两次到达的数据包中
不动如岳 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xwffwx 的回复:]
以前知道如果不做收发同步的话,前后发送的数据包会合在一起,
但我想知道数据包在经过发送接收过程后是否会被拆开
[/Quote]
会的,每次有数据到来时,都会产生FD_READ
zhengq06 2009-12-30
  • 打赏
  • 举报
回复
学习~
duyalong 2009-12-30
  • 打赏
  • 举报
回复
顶一下,学习中
青稞 2009-12-29
  • 打赏
  • 举报
回复
不会再有FD_READ,但Recv是从缓冲区里面取数据的,取多少你自己可以定的,没有取完可以继续调用Recv接着取,直到Recv返回0为止,这时表示缓冲区的数据取完了。。
ccpaishi 2009-12-29
  • 打赏
  • 举报
回复
缓冲区有数据的话,需要判断返回值来判断是否需要继续调用recv
lijianli9 2009-12-29
  • 打赏
  • 举报
回复
不会再有FD_READ,但是那些没有取出的数据是保存在socket数据系统缓冲区中的,如果你不关闭socket,这些数据一直在,如果你调用recv,那还可能取得那些数据。
xwffwx 2009-12-29
  • 打赏
  • 举报
回复
缓冲区有数据就可以select到FD_READ
-----------
这是我希望的,但现在有几种不同的意见了,有点拿不准,希望更多朋友参与讨论

如果是这样的话,那么每recv一次后是不是要重新调用select才能有FD_READ,还是说只要在socket连接完成后select一次后以后只要缓冲区有数据就会有FD_READ事件?
bragi523 2009-12-29
  • 打赏
  • 举报
回复
缓冲区有数据就可以select到FD_READ
xwffwx 2009-12-29
  • 打赏
  • 举报
回复
补充一下,我不是用UDP
xwffwx 2009-12-29
  • 打赏
  • 举报
回复
那也即意味着在FD_READ事件中必须把已达到的数据全部取出吗
如果不能全部取出的话,是否会象2楼说的那样,未取出的数据丢失了,再也取不到?
Wenxy1 2009-12-29
  • 打赏
  • 举报
回复
不会再有FD_READ风络事件通知。
xwffwx 2009-12-29
  • 打赏
  • 举报
回复
如果只是单纯recv的话,那么后500字节就做丢弃处理
-----------------
有点疑问,TCP协议不是有自己的缓存吗?
假如说发送端的缓冲大于接收端的缓冲,一定会发生数据丢失吗?
加载更多回复(3)

18,356

社区成员

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

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