Windows套接字recv标志

时间:2018-01-15 13:38:45

标签: c++ c windows sockets

我正在阅读来自msdn的socket recv()文档,我不清楚这些标记究竟是做什么的:

int recv(
  _In_  SOCKET s,
  _Out_ char   *buf,
  _In_  int    len,
  _In_  int    flags //these
);

我查看了winsock2.h并找到了一些标记的值,例如:MSG_OOBMSG_PEEK,但MSG_WAITALL未定义。

你能否向我解释每个旗帜的作用以及它的价值(int)?

编辑:似乎我的问题并不清楚,但我确实阅读了有关该标志的文档部分,我仍然不理解每个标志的recv()行为,因此如果可能的话,我要求用一个例子来解释每个标志。

1 个答案:

答案 0 :(得分:2)

recv()上查看此MSDN文章:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx

我真的没有在我完成的所有网络工作中使用任何这些标志,除了MSG_PEEK - 我不明白为什么它在大多数情况下会出现。

您可以查看WinSock2.h标头文件并从中推断出值:

#define MSG_OOB         0x1             /* process out-of-band data */
#define MSG_PEEK        0x2             /* peek at incoming message */
#define MSG_DONTROUTE   0x4             /* send without using routing tables 
#define MSG_WAITALL     0x8             /* do not complete until packet is