获取窗口上的套接字超时值

Get a socket timeout value on windows

本文关键字:超时 套接字 窗口 获取      更新时间:2023-10-16

WinSock 的 MS 文档说您无法获得为套接字设置的超时:

下表列出了表示 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

那么有没有一些丑陋的方法可以在本机代码中获取它。

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

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

我找到的第一个 MSDN 文档说它支持。二十年前,我在Windows中使用它。您的第一个(未引用)来源存在严重问题。