CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  J#

如何测试一个Socket是否已断开?

楼主Januarius_(努力学习J2EE中)2003-05-04 08:55:39 在 .NET技术 / J# 提问

如题,要求是在不向该Socket的流发送或者是接收任何消息,怎样知道它是否仍然是有效的,谢谢!  
  问题点数:50、回复次数:9Top

1 楼gujunyan(缘份擦肩而过)回复于 2003-06-06 13:16:32 得分 10

if(Socket.Connected)  
  {  
  还连着  
  }else  
  {  
  断了.  
  }Top

2 楼epoluodi(太阳神)回复于 2003-06-23 20:26:44 得分 0

楼上的是白痴阿Top

3 楼clever_boy_2000(郭敬)回复于 2003-06-25 14:50:27 得分 0

哈哈Top

4 楼feifa(孤程)回复于 2003-06-27 16:47:37 得分 20

上面的方法错误,我把我的程序写出来,需要在线程里检测,检测到断开,要退出线程.  
    private   TcpClient             client;    
    private   Thread                   threadReceive   ;  
    private   NetworkStream     stream;  
    private   TcpListener         tliten1;  
   
  private   void   receive()    
  {    
  //设置读取数据的空间    
  byte[]   bb   =   new   byte[50];    
  while(true)  
  {  
    int   i   =   stream.Read(bb,0,50);    
    if(i==0)  
  {  
  richTextBox1.AppendText("对方断开连接"+"\r\b");  
  break;  
  }  
  //转换成字符串,如果是中文控制码则用  
                  string   ss   =System.Text.Encoding.Unicode.GetString(bb);    
                  string   ss   =   Encoding.ASCII.GetString(bb);    
  richTextBox1.AppendText(ss+"\r\b");    
  }  
  }    
   
  try    
  {          
  stream   =   client.GetStream();                                
  if(stream.CanWrite)    
  {    
  //发送控制码    
  string   sendtext   =textBox2.Text;  
  byte[]   by   =System.Text.Encoding.ASCII.GetBytes(sendtext.ToCharArray());    
  //byte[]   by   =System.Text.Encoding.Unicode.GetBytes(sendtext.ToCharArray());    
  stream.Write(by,0,by.Length);    
  //下次使用    
  stream.Flush();    
  //启动接收反回数据的线程    
  //receive是线程执行的函数,见后面的分析    
  threadReceive   =   new   Thread(new   ThreadStart(receive));    
  threadReceive.IsBackground=true;  
  threadReceive.Start();    
  }    
  }    
  catch(Exception   ee)    
  {    
  richTextBox1.AppendText   (ee.Message+"\r");    
  MessageBox.Show(ee.Message);    
  }Top

5 楼feifa(孤程)回复于 2003-06-27 16:51:45 得分 0

上面的程序,第一段是检测网络断开的,下面的没有加过程名,是启动线程的过程名.Top

6 楼huicfjun(forrest)回复于 2003-07-08 08:08:14 得分 20

import   System.Net.Sockets.*;  
   
  Socket   s   =   new   Socket(...);  
  if   (s.get_Connected()){  
          //连接正常  
  }else{  
          //已断开  
  }  
   
  不过这样测试会占一定的带宽,最好是在传送数据的时候捕捉异常加以判断。  
   
  try{  
  sout.write(GBK.toBytes(str));  
  sout.flush();  
  }catch(Exception   e){  
  //断线处理  
  return;  
  }  
  Top

相关问题

  • socket如何判断状态,比如网络是否断开?
  • socket客户端,如何判断服务器是否断开。
  • 如何判断csocket是否已断开
  • XMLHTTP的问题,conn是否要断开
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • 如何判断socket断开连接
  • 关于socket断开连接的问题?
  • 使用socket通信,怎样测试网络连接是否正常?
  • 请指示,如何立刻获得网络是否断开
  • 请问如何判断开始菜单条是否隐藏?

关键词

  • socket
  • 断开
  • sendtext
  • stream
  • bb
  • encoding
  • ss
  • byte
  • private
  • text

得分解答快速导航

  • 帖主:Januarius_
  • gujunyan
  • feifa
  • huicfjun

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo