我用socket类开发时怎么知道对方已经关闭了?
解决方案 »
- c#的winform设计,设计好的界面,随便更改一下有关控件的属性,哪怕是text属性,许多布局值,比如size、location的值都变了,变的很离谱
- 希望统一修改一些chart控件的样式,该怎样做?
- 乱码问题
- c#操作XML格式的字符串
- C# 中的四舍五入函数及 Math.Round 勘误
- 获取远程局域网计算机内的IP
- 如何设置用户控件的默认事件?
- Spread for .net 中左上角的全选按钮我怎么可以让字显示在上面
- 如何删除datagrid后面多余的空列?
- 如何用水晶报表显示程序运行中产生的DataTable里面的数据?
- 异步方式更新界面 怎样可以最大程度松耦合
- SAP 用C#做外围开发有没有好的教材
微软的文档是这样描述poll方法的
“Poll 方法将会检查 Socket 的状态,此方法不能检测某些类型的连接问题,例如,网络电缆中断或远程主机意外关闭。您必须尝试发送或接收数据以检测这些类型的错误。
”
下面的代码示例会创建套接字,连接到服务器并使用 Poll 检查套接字的状态。
//Creates the Socket for sending data over TCP.
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp );
// Connects to host using IPEndPoint.
s.Connect(EPhost);
if (!s.Connected)
{
strRetPage = "Unable to connect to host";
}
// Use the SelectWrite enumeration to obtain Socket status.
if(s.Poll(-1, SelectMode.SelectWrite)){
Console.WriteLine("This Socket is writable.");
}
else if (s.Poll(-1, SelectMode.SelectRead)){
Console.WriteLine("This Socket is readable." );
}
else if (s.Poll(-1, SelectMode.SelectError)){
Console.WriteLine("This Socket has an error.");
}