socket.IOControl 都有哪些选项
时间: 2023-12-15 17:05:20 浏览: 223
socket.IOControl 包含以下选项:
1. FIONREAD:获取输入缓冲区中的数据字节数。
2. FIONBIO:设置非阻塞模式。
3. FIOASYNC:设置异步通知模式。
4. SIOCATMARK:获取当前指针是否位于带外数据的边界上。
5. SIO_GET_EXTENSION_FUNCTION_POINTER:获取扩展函数的指针。
6. SIO_KEEPALIVE_VALS:设置 TCP Keep-Alive 值。
7. SIO_LOOPBACK_FAST_PATH:启用快速回送路径。
8. SIO_RCVALL:设置接收所有数据包的模式。
9. SIO_RCVALL_IGMPMCAST:设置接收所有 IGMP 多播数据包的模式。
10. SIO_RCVALL_MCAST:设置接收所有多播数据包的模式。
11. SIO_RCVALL_PROTO:设置接收指定协议的所有数据包的模式。
12. SIO_ROUTING_INTERFACE_QUERY:查询路由接口。
13. SIO_SET_COMPATIBILITY_MODE:设置兼容模式。
14. SIO_UDP_CONNRESET:重置 UDP 连接。
相关问题
socket.IOControl作用
Socket.IOControl是一个控制Socket选项的方法。它的作用是在Socket连接的过程中,控制Socket的一些特殊选项,比如:超时时间、缓冲区大小等等。它可以通过Socket的控制码和选项值来设置和获取Socket选项。在网络编程中,Socket.IOControl是一个非常重要的方法,它可以帮助程序员更好地控制Socket连接,从而提高程序的性能和可靠性。
c#使用socket类 服务端连接超时设置、发送接收超时设置
在 C# 中,使用 `System.Net.Sockets.Socket` 类进行网络通信时,可以设置服务端和客户端连接的超时时间,以及发送和接收数据的超时时间。以下是关键设置方法:
1. **连接超时** (TimeToConnect):
- 对于服务器端,一般是在创建 `Socket` 实例时设置,例如:
```csharp
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ConnectTimeout, timeoutInMilliseconds);
```
- 这里的 `timeoutInMilliseconds` 是以毫秒为单位的超时值。
2. **发送和接收超时** (SendTimeout 和 ReceiveTimeout):
- 对于服务器,可以在需要的时候分别设置这两个选项,如:
```csharp
serverSocket.SendTimeout = timeoutForSendingInMilliseconds;
serverSocket.ReceiveTimeout = timeoutForReceivingInMilliseconds;
```
- 如果想在整个操作期间保持默认超时,也可以单独设置 `SocketOptionName.IOControl` 来传递控制信息,包含发送和接收的超时。
记得在实际应用中,根据网络条件和需求合理设置这些超时值,过短可能会导致频繁的异常处理,过长则可能导致资源浪费。
阅读全文