1.Socket..::.Poll 方法 确定 Socket 的状态。
-
mode
-
类型:
System.Net.Sockets..::.SelectMode
SelectMode 值之一。
-
可以判断当前SOCKET,是否可以发送,可读等状态
-
MSDN:
-
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.poll.aspx
-
示例能够很清楚说明用法
2.需要确定多个socket的状态,确定一个或多个套接字的状态。 Socket..::.Select 方法
MSDN很清楚了:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.select.aspx
3.Socket..::.SetSocketOption 方法 设置 Socket 选项
Socket 选项用来确定当前 Socket 的行为
起什么作用的:
我理解的: 因为在TCP协议包中的很多标志位中的设置对外进行API的开放的需求
有的协议包标志位flag可以用bool表示,有得可以用对象来开放API,有的是直接字节传个.net的socket机制
所以有Socket..::.SetSocketOption 方法 提供了四重重载
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.setsocketoption.aspx
对 LingerOption的操作, LingerOption是属于对象,所以使用第三个重载方法,将指定的 Socket 选项设置为指定值,表示为对象。
LingerOption myOpts = new LingerOption(true,1); mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, myOpts);
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.lingeroption.aspx
s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);
整数的方式来设置
BOOL的方式可以设置的很多,其中Keep-Alive的处理;MSDN:
http://msdn.microsoft.com/zh-cn/library/e160993d.aspx
同样 IOControl方法也是同样的概念,只是针对的设置对象不一致
MSDN解释: 为 Socket 设置低级别操作模式。
以TCP协议中的Keep-Alive数据包功能为例
SetSocketOption确定是否在当前socket中使用该心跳包功能
而IOControl这个方法则设置如果使用该功能的具体的时间间隔和使用参数是怎么设置的
具体更详细的使用网上有篇文章<C#中利用Keep-Alive处理Socket网络异常断开的方法>介绍的满清楚
所以看来,有时间还是要把TCP/IP协议好好看看再
4...::.Connected 属性
Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket 要么从未连接,要么已断开连接。
Connected 属性的值反映最近操作时的连接状态,而不是当前的状态
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.connected.aspx
如果您需要确定连接的当前状态.............据说是没用...这个我还没有测试过.