gpt4 book ai didi

java - 我的 serverSocket 中仅获取一个客户端

转载 作者:行者123 更新时间:2023-11-30 08:09:28 25 4
gpt4 key购买 nike

我有一个服务器套接字,我想将它打开给多个客户端。但只获得 1,如果我关闭该客户端,我将无法获得更多客户端。

服务器代码:

public class Server {

public void startServer() {
final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10);
Runnable serverTask = new Runnable() {
@Override
public void run() {
try {
InetAddress ip;
connect cn = new connect();
ServerSocket serverSocket = new ServerSocket(9239);
Socket clientSocket;
System.out.println("Waiting for clients to connect...");

clientSocket = serverSocket.accept();

String HostName = "";
String HostIp = "";
String PC = "";

clientProcessingPool.submit(new ClientTask(clientSocket));
HostName = clientSocket.getInetAddress().getHostName();
HostIp = clientSocket.getInetAddress().getHostAddress();
System.out.println(HostName + "/" + HostIp);

PC = HostName + "/" + HostIp;

cn.insert(PC);



} catch (IOException e) {
System.err.println("Unable to process client request");
e.printStackTrace();
} catch (ClassNotFoundException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
Thread serverThread = new Thread(serverTask);
serverThread.start();
}

private class ClientTask implements Runnable {
private final Socket clientSocket;

private ClientTask(Socket clientSocket) {
this.clientSocket = clientSocket;
}

@Override
public void run() {
System.out.println("Got a client !");

try {
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}



}

当我使用客户端时,我会获取 IP 和主机名,但是,如果我启动另一个客户端,它不会监听它。

我做错了什么?我认为没有必要上传我的客户端代码,因为我得到了第一个,所以我认为我在这方面做错了什么。

最佳答案

您必须将线程放入 while 循环中,如果没有它,在创建一个连接后代码就会完成并停止。

关于java - 我的 serverSocket 中仅获取一个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com