【发布时间】:2018-06-24 03:38:52
【问题描述】:
我正在阅读来自 msdn 的套接字 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() 行为,因此如果可能的话,我要求用一个例子来解释每个标志。
【问题讨论】:
-
标志记录在这里(大约一半):msdn.microsoft.com/en-us/library/windows/desktop/… 如果您搜索“MSDN recv”(或其他函数),您将在第一次点击中获得 MS 文档。
-
正如我提到的,我阅读了该文件,但描述对我来说没有意义。也许一些例子会做
-
也许你应该问一个具体的问题,文档对我来说似乎很清楚,你不理解的每个标志具体是什么?
-
例如当 flags=0 或 4 时 recv 的行为是什么?加上每个标志的值是什么。我认为问题很明确
-
每个标志的值在
winsock2.h中定义。 (如果缺少任何内容,您需要更新您的 SDK)。 0 是没有标志。 4 是MSG_DONTROUTE(可能)并且没有记录为recv的有效标志,因此预计会出现错误和未定义的行为。