关于serversocket的问题 每个连接一个线程处理,关闭serversocket前,我想让serversocket不接受新的连接,就是说在要关闭的时候,其他线程可能还没处理完 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ServerSocket ss=ServerSocket(2222);while(true){ Socket s=ss.accept(); }//这样不就行了.. 那总要有个触发的机制啊,现在你怎么样去触发这个行为了,有了触发,就可以对行为做出判断,然后就可以处理了啊。可以设一个标识变量,线程里面处理结束后处理这个标识。然后对于ACCEPT,可以用这个变量的状态及你的触发(可能是另外一个变量)去判断是否要ACCEPT,这样应该就可以了吧 boolean flag = tureServerSocket ss=ServerSocket(2222);while(flag){ Socket s=ss.accept(); if(flag) dosomething(s)}当收到结束信号的时候,flag=false;而且要立即中断accept的执行当所有连接s的事务处理完以后才关闭serversocke ss我的问题是如何做到: 当收到结束信号的时候,flag=false;而且立即中断accept的执行 可以考虑在ServerSocket的accept方法作控制:设置一个标志信息,true时执行accept操作,false时不执行accept操作。 to fogs(菜鸟想飞) 是有个标志,但是我要如何中断正在执行的accept(),并且已经建立的连接不受影响 boolean flag = tureServerSocket ss=ServerSocket(2222);while(flag){ if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值 Socket s=ss.accept(); if(flag) dosomething(s) }else{ //等待结束 } //休息XX毫秒} 这个我知道但是boolean flag = tureServerSocket ss=ServerSocket(2222);while(flag){ if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值 Socket s=ss.accept(); if(flag) dosomething(s) }else{ //等待结束 } //休息XX毫秒}是在一个线程里头,我在另一个线程里头吧状态改了但是这时候这个线程正在执行accept()我的问题是要让这个accept立即返回,并抛出异常 1.想在accept的过程中中断操作,比较难。accept是sun去实现的,不知道提供事件通知机制了没有,当然楼主可以修改jdk代码来实现这个功能。2.实在不行,可以在accept之后再作一次accept_flag的判断,如果是false就不执行dosomething(s)。 2.实在不行,可以在accept之后再作一次accept_flag的判断,如果是false就不执行dosomething(s)。我开始也是这么做的,但是感觉不完美。我是个完美主义者,hohohoho~~~ 用serversocket的close()可以立即让accept()返回但是会把serversocket关了 :)就算是事件通知,或者jdk提供什么方法,还不是一样的道理吗!都是中断正在执行的操作。如果从保险度来说,还是在自己的代码中作判断最安全、最可靠。 我试了一下,serversocket的close()不会关闭已经建立的连接hohoho收工 新手java debug使用请教 关于byte的问题 请教一个小问题 如何配置jdk1.4环境变量? 什么算法书好 系统设计之道 随机数重致的问题,帮一下兄弟 如何获得当前路径的名字? 请给一个Together For Eclipse 6.1 及 Keygen的下载地址,先给20分,解决后再开贴给100分 江湖告急- 用JDK做的程序如何打包???谢谢 JAVA下什么函数进行进制转换啊?(二进制转十进制等)
while(true){
Socket s=ss.accept();
}
//这样不就行了..
ServerSocket ss=ServerSocket(2222);
while(flag){
Socket s=ss.accept();
if(flag) dosomething(s)
}
当收到结束信号的时候,flag=false;而且要立即中断accept的执行
当所有连接s的事务处理完以后才关闭serversocke ss
我的问题是如何做到: 当收到结束信号的时候,flag=false;而且立即中断accept的执行
ServerSocket ss=ServerSocket(2222);
while(flag){
if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值
Socket s=ss.accept();
if(flag) dosomething(s)
}else{
//等待结束
}
//休息XX毫秒
}
但是
boolean flag = ture
ServerSocket ss=ServerSocket(2222);
while(flag){
if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值
Socket s=ss.accept();
if(flag) dosomething(s)
}else{
//等待结束
}
//休息XX毫秒
}
是在一个线程里头,我在另一个线程里头吧状态改了
但是这时候这个线程正在执行accept()
我的问题是要让这个accept立即返回,并抛出异常
但是会把serversocket关了
就算是事件通知,或者jdk提供什么方法,还不是一样的道理吗!都是中断正在执行的操作。如果从保险度来说,还是在自己的代码中作判断最安全、最可靠。
hohoho
收工