获取窗口上的套接字超时值
Get a socket timeout value on windows
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中使用它。您的第一个(未引用)来源存在严重问题。
相关文章:
- 为什么我在蓝牙连接()上收到"java.io.IOException:读取失败,套接字可能关闭或超时,读取re
- UDP 套接字 select() 在某些情况下无延迟(超时)返回 1
- Linux 套接字 recv 返回 -1,errno 110 连接超时
- 为什么 Windows udp 接收套接字上的超时总是比 SO_RCVTIMEO 设置的长 500 毫秒
- 如何设置超时以在C套接字上"connect()"功能?
- 如何通过超时检查Boost ASIO套接字中的数据
- c tcp套接字非阻塞接收超时
- C++中的Bittorrent客户端,在非阻塞套接字上连接到对等端总是超时
- 多线程套接字超时
- 客户端套接字连接() 在服务器 accept() 超时后成功
- 正在设置套接字超时
- 套接字SO_RCVTIMEO超时是C++/VC++中设置值的两倍
- 如何在Unix上的c++套接字上使用带有read()的超时
- 套接字连接超时因网络而异
- 管理多个UDP套接字的超时
- 在Windows上设置来自套接字的recv超时
- Boost ASIO套接字读取N字节不多不少,等待它们到来或超时异常
- 带超时的多线程面向对象套接字代码
- 正在获取套接字函数的连接超时
- 从一组套接字中检测超时套接字