有没有办法在D中调用带有MSG_WAITALL标志的Socket上的receive()?我检查了源代码,但似乎没有它的枚举。
答案 0 :(得分:3)
看起来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 */);
这有点hackish,但是如果你看一下源代码,你可以看到标志在传递到低级recv
时只是转换回int,所以它应该没有问题。< / p>