java socket服务器端线程卡死

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java socket服务器端线程卡死相关的知识,希望对你有一定的参考价值。

package Socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class Chat_Server

ServerSocket ss = null;
Socket s = null;
List<Client> clients = new ArrayList<Client>();
boolean started = false;

public void start()
try
ss = new ServerSocket(12345);
started = true;
while (started)
s = ss.accept();
System.out.println("客户端_" + s.getPort() + "加入到这个聊天室。");
Client c = new Client(s);
clients.add(c);
new Thread(c).start();

catch (BindException e)
System.out.println("端口已经被使用--\r\n"
+ "请关闭相关程序重新打开客户端!");
System.exit(0);
catch (IOException e)
e.printStackTrace();




public void start_up()
new Chat_Server().start();


在主程序中点启动服务器按钮后程序会卡死,但再次运行可以创建客户端,说明服务器是有的但一开始的程序还是卡死 也关不掉 求详细解决方案 感谢
有字数限制 所以就贴一下大体功能部分

对于socket通信的操作,不要放在主线程,另开一个子线程,顺便一说,accept这个方法是堵塞的,在没有收到消息的情况下会一直堵塞在那里,所以如果你客户端没发送数据给服务端,那么基本服务端所在那条线程会停滞在那个方法,估计就这原因让你的程序看起来是卡死的,所以咯,别把通信的操作写在主线程,要写在子线程 参考技术A new Thread(c).start();当中的c 的类,是如何的 。。。。。。。。

以上是关于java socket服务器端线程卡死的主要内容,如果未能解决你的问题,请参考以下文章

java socket 多线程通讯 使用mina作为服务端

pythonsocket服务端响应多个返回

java socket多线程问题,我写了一个socket tcp服务端,高手来进来看下,谢啦。是关于多客户端并联的问题

在客户端 JAVA 中调用 socket.close() 时,套接字未关闭服务器端

Java Socket 通信之多线程

关于 java socket的消息推送问题