服务器端Socket(tcp)如何知道客户端Socket退出? SocketException的 ErrorCode来 看啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int lenth=stream.read()lenth ==0 客户端断开lenth ==-1 网络中断 1.server 读取 client 的中断标志 2.不知道 c# 里面有没有 timer 类,如果有可以用超时来捕捉 我能不能在Socket.Send之前获得client已经中断? if(Sock.Available<=0&&Sock.Poll(500,SelectMode.SelectRead)) { Stream.Close(); Sock.Shutdown(SocketShutdown.Both); Sock.Close(); richTextBox1.AppendText("客户连接断开 时间:"+DateTime.Now.ToString()+"\n"); } if(!Sock.Connected) { try { Point=new IPEndPoint(IP,1979); Sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); Sock.Connect(Point); Stream=new NetworkStream(Sock); richTextBox1.AppendText("客户重连成功 时间:"+DateTime.Now.ToString()+"\n"); } catch{} } if(Sock.Available<=0&&Sock.Poll(500,SelectMode.SelectRead))是否就可判断Sock已未连接? 你可以参考一下Remoting中的租约机制,当租约期为0时,标志到期。你可以选择是断开还是续约 我是想知道Socket通道是否还是通的?比如突然网线断的情况。不知道有什么科学的方法? 我也想知道有没有更好的办法我用的是Socket.Send时抛出SocketException的方法 我的办法: public bool isConnected(Socket s) { IPEndPoint rPoint=null; try { rPoint = s.RemoteEndPoint; } catch { return false; } return !rPoint == null } rPoint = s.RemoteEndPoint;好使吗?RemoteEndPoint会实时与客户端联系一下再获得值? 客户端网线已断好久,rPoint = (IPEndPoint)s.RemoteEndPoint;没有throw任何错误啊。看样子我还是使用“心跳”测试法。 你的socket有没有用多线程来控制啊?若用单线程的话,才会出现你目前要解决的这个问题多线程的话,就按我上面说的方法,决不会有问题。我都多了N个这样的程序了。 如何将B/S程序和C/S程序一起打包安装??? C# 控件的问题 combox只能通过数据绑定设值么 .NET中如何使下拉框置底 关于窗口图形删除的问题------跪求解决 最好能详细点 大家帮我看看这个循环读数据的需要改哪里?? 怎样在#region里面换行啊? C# form 中有没有编辑显示XML数据的控件 请教两个关于密匙如何存放的问题? 在线阅读PDF文件,限制拷贝、打印、另存为 如何判断一个对象(如dataset)是否已经实例化了? 报错了:“未将对象引用设置到对象的实例”,怎么办呢?
lenth ==0 客户端断开
lenth ==-1 网络中断
2.不知道 c# 里面有没有 timer 类,如果有可以用超时来捕捉
{
Stream.Close();
Sock.Shutdown(SocketShutdown.Both);
Sock.Close();
richTextBox1.AppendText("客户连接断开 时间:"+DateTime.Now.ToString()+"\n");
}
if(!Sock.Connected)
{
try
{
Point=new IPEndPoint(IP,1979);
Sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Sock.Connect(Point);
Stream=new NetworkStream(Sock);
richTextBox1.AppendText("客户重连成功 时间:"+DateTime.Now.ToString()+"\n");
}
catch{}
}
是否就可判断Sock已未连接?
不知道有什么科学的方法?
我用的是Socket.Send时抛出SocketException的方法
public bool isConnected(Socket s)
{
IPEndPoint rPoint=null;
try
{
rPoint = s.RemoteEndPoint;
}
catch
{
return false;
}
return !rPoint == null }
好使吗?RemoteEndPoint会实时与客户端联系一下再获得值?
rPoint = (IPEndPoint)s.RemoteEndPoint;
没有throw任何错误啊。
看样子我还是使用“心跳”测试法。
多线程的话,就按我上面说的方法,决不会有问题。我都多了N个这样的程序了。