D中的MSG_WAITALL标志

时间:2013-11-19 19:09:03

标签: sockets d recv

有没有办法在D中调用带有MSG_WAITALL标志的Socket上的receive()?我检查了源代码,但似乎没有它的枚举。

1 个答案:

答案 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>