我遇到一个奇怪的问题,在线程里开socket server在accept之后就立刻退出了!没有异常我的代码如下:class ThreadUseRunnable implements Runnable {
ThreadUseRunnable(){}// 构造函数
public void run() {
try {
server = new ServerSocket(port);
BufferedReader in;
PrintWriter out;
while (status == 1){
socket = server.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
} }catch (SocketException e) {
logger.error("端口" + port + "可能已被占用!" + e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
return;
}
}
}开线程的代码:
Thread th = new Thread(new ThreadUseRunnable());
th.start();难道是不允许在线程中开server socket吗?
ThreadUseRunnable(){}// 构造函数
public void run() {
try {
server = new ServerSocket(port);
BufferedReader in;
PrintWriter out;
while (status == 1){
socket = server.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
} }catch (SocketException e) {
logger.error("端口" + port + "可能已被占用!" + e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
return;
}
}
}开线程的代码:
Thread th = new Thread(new ThreadUseRunnable());
th.start();难道是不允许在线程中开server socket吗?
由于我的需求是要通过别的程序来控制这个socket server 的启动与停止,所以我想把server放在一个线程中监听
你可以这样用
Thread th = new Thread(new ThreadUseRunnable());
th.start();
Thread.currentThread().sleep(10000);然后看看效果 你应该就明白了注意区分守护线程和非守护线程