怎样判定socket连接已经关闭? 用socket连接远程服务器时,有时候会发生远程服务器断开连接,改如何判断?我用C# TcpClient,有时候server已经关闭,但是TcpClient.connected还是true(比如server的80端口),用什么方法判断比较好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写个try catch来捕捉吧 直接用Socket类吧,这个比较好控制!!Socket对象在对方断开连接的时候Receive方法会返回一个0字节的数据包。这样就可以判断对方是否断开连接了。 sock.Listen(50); listenshow.Text="主机"+myIP+"端口:8545开始监听......\r\n"; while(true) { temp = sock.Accept(); if(temp.Connected == true) { listenshow.Text = "与客户建立连接!"; this.send1.Enabled = true; while(bb) { int byteRecv = 0; try { Byte[] bbb=new Byte[64]; byteRecv = temp.Receive(bbb,bbb.Length,0); if(byteRecv < 1) { temp.Close(); temp = null; listenshow.Text = "与客户断开连接!从新监听!"; this.send1.Enabled = false; this.showimage.Text = ""; break; } string ccc=System.Text.Encoding.BigEndianUnicode.GetString(bbb); showimage.AppendText(ccc+"\r\n"); } catch(SocketException ex) { MessageBox.Show(ex.ToString()); temp.Close(); listenshow.Text = "与客户断开连接。"; this.send1.Enabled = false; this.showimage.Text = ""; break; } catch(ObjectDisposedException ex) { MessageBox.Show(ex.ToString()); break; } } }wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴) 兄弟帮忙解决的...那出来让兄弟参考.. 昨天刚刚把我所有的家当都散了.这个:http://community.csdn.net/Expert/topic/5524/5524609.xml?temp=.4617731 http://blog.csdn.net/nstorm/archive/2004/12/27/231192.aspx同步和异步连接拔掉网线可能检测不到。 LS的,你Blog上的写的方法并不能检测基础网络异常。 http://www.cnblogs.com/liuzhiwei/archive/2007/04/24/725348.html 我用C#提供的封装,MSDN上提供的方案没有一种能够成功,用netstat查看连接已经断开的情况下,socket返回的还是true。貌似是无法在这一层上实现了。 我的Blog上有一篇文章就是讲这个的,你可以去看看!http://blog.csdn.net/wzd24 求组....sql语句让两行变两列 xml文件反序列化的问题? 送分題︰更新時間與DBServer(Oracle)時間同步 很有意思的问题,求高手帮忙 关于循环的问题 SQL Server 2005为何找不到Business Intelligence Development Studio 求助:WMP控件上面呢叠加透明Label标签的问题 这题很有意思啊 大容量数据查询问题 急!!!!!怎么用DataConnection在运行阶段连接才指定的数据库啊?? 急!!如何将Graphics画的图象保存到内存中? 求一个解决方案
Socket对象在对方断开连接的时候Receive方法会返回一个0字节的数据包。这样就可以判断对方是否断开连接了。
listenshow.Text="主机"+myIP+"端口:8545开始监听......\r\n";
while(true)
{
temp = sock.Accept();
if(temp.Connected == true)
{
listenshow.Text = "与客户建立连接!";
this.send1.Enabled = true;
while(bb)
{
int byteRecv = 0;
try
{
Byte[] bbb=new Byte[64];
byteRecv = temp.Receive(bbb,bbb.Length,0);
if(byteRecv < 1)
{
temp.Close();
temp = null;
listenshow.Text = "与客户断开连接!从新监听!";
this.send1.Enabled = false;
this.showimage.Text = "";
break;
}
string ccc=System.Text.Encoding.BigEndianUnicode.GetString(bbb);
showimage.AppendText(ccc+"\r\n");
} catch(SocketException ex)
{
MessageBox.Show(ex.ToString());
temp.Close();
listenshow.Text = "与客户断开连接。";
this.send1.Enabled = false;
this.showimage.Text = "";
break;
} catch(ObjectDisposedException ex)
{
MessageBox.Show(ex.ToString());
break;
} } }wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴) 兄弟帮忙解决的...
那出来让兄弟参考..
这个:http://community.csdn.net/Expert/topic/5524/5524609.xml?temp=.4617731
http://blog.csdn.net/wzd24