繁体   English   中英

强制recv(Windows C ++)函数阻塞,直到读取N个字节

[英]Force recv (Windows C++) function to block until N bytes are read

将此代码用于客户端 - 服务器体系结构。 代码运行简单,没有任何问题。 但是,TCP会将大数据包分成多个较小的数据包。 问题来自recv功能。 我对Windows编程很陌生,想知道是否有像read函数一样阻塞,直到它从客户端套接字读取所有N个字节(当你想从客户端套接字fd读取时,它在Linux中)。 有任何想法吗?

Windows recv文档列出了一个MSG_WAITALL标志,该标志将使调用等待,直到完全填充给定的缓冲区:

MSG_WAITALL只有在发生以下事件之一时,接收请求才会完成:

  • 呼叫者提供的缓冲区已满。
  • 连接已关闭。
  • 请求已取消或发生错误。

例:

iResult = recv(ConnectSocket, recvbuf, recvbuflen, MSG_WAITALL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM