我正在阅读来自msdn的socket recv()
文档,我不清楚这些标记究竟是做什么的:
int recv(
_In_ SOCKET s,
_Out_ char *buf,
_In_ int len,
_In_ int flags //these
);
我查看了winsock2.h
并找到了一些标记的值,例如:MSG_OOB
和MSG_PEEK
,但MSG_WAITALL
未定义。
你能否向我解释每个旗帜的作用以及它的价值(int)?
编辑:似乎我的问题并不清楚,但我确实阅读了有关该标志的文档部分,我仍然不理解每个标志的recv()行为,因此如果可能的话,我要求用一个例子来解释每个标志。
答案 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