您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> socket发送与接收的困惑

socket发送与接收的困惑

来源:网络整理     时间:2016/7/29 0:35:34     关键词:

关于网友提出的“ socket发送与接收的困惑”问题疑问,本网通过在网上对“ socket发送与接收的困惑”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: socket发送与接收的困惑
描述:

发送端发送1000字节,接收端发生FD_READ事件,假设这1000字节完整地一次性发送到了接收端
在事件处理中,用recv读出500字节即返回
此时发送端数据已发送完成,不再发新数据,
请问接收端是否还会产生FD_READ事件来提醒我还有500字节未处理


解决方案1:

你用的是UDP的,后面的会丢弃掉。UDP的要么全收,要么一个字节都收不到!

解决方案2:

引用 12 楼 xwffwx 的回复:
以前知道如果不做收发同步的话,前后发送的数据包会合在一起,
但我想知道数据包在经过发送接收过程后是否会被拆开

会的,每次有数据到来时,都会产生FD_READ 解决方案3:

学习~

解决方案4:

顶一下,学习中

解决方案5:

不会再有FD_READ,但Recv是从缓冲区里面取数据的,取多少你自己可以定的,没有取完可以继续调用Recv接着取,直到Recv返回0为止,这时表示缓冲区的数据取完了。。

解决方案6:

缓冲区有数据的话,需要判断返回值来判断是否需要继续调用recv

解决方案7:

   如果只是单纯recv的话,那么后500字节就做丢弃处理。这取决你接收数据缓冲区的大小。一般发送缓冲区和接受缓冲区是相等的,或者接受的大于发送的。

解决方案8:

不会再有FD_READ,但是那些没有取出的数据是保存在socket数据系统缓冲区中的,如果你不关闭socket,这些数据一直在,如果你调用recv,那还可能取得那些数据。

解决方案9:

缓冲区有数据就可以select到FD_READ

解决方案10:

不会再有FD_READ风络事件通知。


以上介绍了“ socket发送与接收的困惑”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2996471.html

相关图片

相关文章