CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

关于多线程环境下,socket异常问题,请高人指点

楼主KongDX(堪迪斯)2005-01-23 20:54:13 在 Java / J2SE / 扩展类 提问

简单的说,大概是这样的  
  public   class   SocketListener   extends   Thread   {  
          private   boolean   stop=false;  
          private   ServerSocket   serverSocket   =   new   ServerSocket(......);  
          public   void   run(){  
                  while(!stop){  
                          Socket   socket=serverSocket.accept();//这里会抛出异常  
        new   ClientThread(socket).start;  
                          //ClientThread是一个线程类,处理socket,并包含了socket.close()  
  }  
          }  
           
          public   void   quit(){  
  stop=true;  
  serverSocket.close();  
          }  
  }  
   
  public   class   mainApp{  
   
          public   static   void   main(String[]   args){  
  quit=false;  
  SocketListener   s=new   SocketListener();  
  s.start()  
  while(true){  
                            if(quit){  
                  s.quit();  
          }  
  }  
          }  
  }  
  因为实际的代码比较多,所以简单的写了一下.调用quit()方法关闭ServerSocket时,会抛出异常socket   closed.  
  请高人指点 问题点数:50、回复次数:2Top

1 楼zealVampire(白鹤泉)回复于 2005-01-23 21:12:13 得分 25

new   ClientThread(socket).start;  
                          //ClientThread是一个线程类,处理socket,并包含了socket.close()  
   
  你在quit的时候   是使stop为true  
  如果这个clientThread还在运行   那么要一直运行close()方法,之后再再while(stop)跳出循环   结束线程  
   
  因为close调用了   再次close就是异常了额Top

2 楼gao277(流氓状元)回复于 2005-01-23 21:21:52 得分 25

错误在于:当你的代码在执行完while(!stop)之后,而没有执行accept之前,如果执行了quit,那么可想而知,你的socket将会被关闭,尽管这是stop被置成true,但是已经过了循环检测语句,所以在你执行accept的时候程序将爆出异常socket   closed!你可以考虑不需要在quit的时候close.Top

相关问题

  • 多线程socket!!!
  • Socket的多线程问题
  • 多线程SOCKET的问题!
  • 多线程Socket问题~~
  • socket的多线程问题
  • 多线程 用socket通信
  • 多线程socket问题
  • 关于多线程异常处理
  • 请问哪位大虾有用多线程来处理并发服务器的例程(最好是windows socket API) 做的,指点一下
  • 多线程SOCKET通信中的问题

关键词

  • 线程
  • socket
  • start
  • clientthread
  • serversocket
  • socketlistener
  • quit
  • stop
  • close
  • true

得分解答快速导航

  • 帖主:KongDX
  • zealVampire
  • gao277

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

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