【发布时间】:2013-11-19 19:09:02
【问题描述】:
有没有办法在 D 中调用带有 MSG_WAITALL 标志的 Socket 上的 receive()?我检查了来源,但似乎没有它的枚举。
【问题讨论】:
有没有办法在 D 中调用带有 MSG_WAITALL 标志的 Socket 上的 receive()?我检查了来源,但似乎没有它的枚举。
【问题讨论】:
看起来 phobos 没有定义它,但 druntime 有,所以你可以将值转换为 SocketFlags:
// on posix
import core.sys.posix.sys.socket;
receive(buffer, cast(SocketFlags) MSG_WAITALL);
// on windows
receive(buffer, cast(SocketFlags) 0x08 /* MSG_WAITALL, number found on msdn */);
这有点骇人听闻,但是如果您查看源代码,您可以看到标志在传递给低级别 recv 时只是被转换回 int ,所以它应该可以正常工作。
【讨论】: