java 除close 以外,如何退出accept

如题所述

无其他回答

如何关闭 accept
setSoTimeout 然后在Listen线程中用interrupt 其实直接close socket也可以,不过会抛出异常,我的意思是有什么比较安全而又简单的办法?难道要加一个标志,然后要关闭的时候把标志设为stop,然后连接listernSocket?这样也未免太麻烦了 JDK5.0里面新增了java.util.concurrent包(对于多线程的开发建议尽量使用这...

java accept阻塞会让cpu100%吗
可能是你的程序出错了,出现死循环,或者是,接受的socket太多。。。检查你的程序是不是有bug。我曾经做过一个server和client的程序,程序写错了,client端无限制的发送socket,server端接收到socket后又发送socket到客户端,就这样一直循环,不一会就卡死了。你考虑考虑是不是这样一个问题。这个方法是阻塞...

如何正确结束Java线程
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但有时run方法是永远不...

java.io.EOFException问题
你这只判断客户连接进来才判断了datas为true 并没有当客户离开时把datas设置为false。所以datas的值一直都是true。关闭之后当然会包流不存在的错误。。。

下面的accept()方法是如何被调用到的?
if ((names == null) || (filter == null)) { return names;} ArrayList v = new ArrayList();for (int i = 0 ; i < names.length ; i++) { if (filter.accept(this, names[i])) { v.add(names[i]);} } return (String[])(v.toArray(new String[v.size()]));} ...

Java ServerSocket accept运行一段时间不再接受新的连接了,这是为什么...
1、while循环,只要你没有修改过receiveStatus,是不会自然结束的 2、你在while里立刻就try了,所以如果产生了Exception,是不可能结束的 结论:有3个可能:1、从你代码看checkClient方法不是异步的,所以如果它停在某处,则整个程序都停了 2、调用Recevie类的方法本身出现了异常(就是new Receive()....

Java后台如何一直运行一个后台
1,保证主线程阻塞,即在执行main方法里添加阻塞代码。2,比如Java做服务器时,接收soket信息,ServerSocket serverSocket =newServerSocket(10086);\/\/1024-65535的某个端口 \/\/2、调用accept()方法开始监听,等待客户端的连接 while(true){}Socket socket = serverSocket.accept(); \/\/3、获取输入流,...

java 如何调用方法里超过10秒就终止该方法,不往下执行,防止线程阻塞
很遗憾,Java不能任意终止一个方法的运行,不过对于接口操作,可以如下处理:a) 如果接口是TCP\/IP,那么可以通过强行关闭socket来终止。如:timer.schedule( new TimerTask() { public void run() { socket.close();} }, 10000);b) 如果接口是用类库的话,看看它有没有设置timeout的地方,如果有...

java的服务器端socket的accept()方法返回值为什么是客户端的socket类型...
服务器和客户端主要的区别就在这,客户端是一个Socket,服务器却可以有很多个。每次当有新的客户端连接是,服务器会生成一个新的socket来响应,但是我不清楚Java中的服务器是否自带多线程,如果不自带的话,想要程序并发的同时处理响应多个客户端的连接,注意在获取到Socket之后交给线程处理。

java socket通信服务器为什么只能接收到客户端第一次发送的消息,后面发 ...
你不会是用serverSocket接收了一次就关掉了吧,这个要一直打开的,写成一个死循环。或者有可能你建立的客户端线程只执行一次。

相似回答
大家正在搜