在Windows上获取套接字超时值

时间:2013-10-12 16:22:14

标签: c++ sockets winsock

WinSock的MS文档说你无法获得为socket设置的超时:

  

下表列出了代表BSD的optname的值   getsockopt函数不支持的套接字选项   ...
  SO_RCVTIMEO int接收超时。   ...

但我注意到可爱的.Net有这个选项:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivetimeout.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

因此在本机代码中有一些难看的方法。 ?

2 个答案:

答案 0 :(得分:2)

.NET设计不基于Windows实施限制。这里没有什么魔力,无论如何都试图使用它只会抛出一个SocketException,“在getsockopt或setsockopt调用中指定了一个未知,无效或不支持的选项或级别”。直接来自Windows的消息,WSAENOPROTOOPT winapi错误代码。但是,当您的程序在支持该选项的Linux,Apple或移动操作系统上运行时,不会。

所以不,它有选项的事实并不保证它会起作用。

答案 1 :(得分:-1)

我找到的第一个MSDN documentation表示支持 。二十年前我在Windows中使用它。你的第一个(未被发现的)来源严重错误。