gpt4 book ai didi

java - 具有多客户端的 ServerSocket

转载 作者:行者123 更新时间:2023-12-01 18:50:14 25 4
gpt4 key购买 nike

ServerSocket 与多个客户端一起使用,我们可能为每个客户端附加单独的线程来工作,但问题是连接工作正常并接受所有客户端,但仅服务最后一个连接。所以这不是问题,或者这是正常现象。

服务器代码:

   ServerSocket serverSocket=null;
Socket client;
System.out.println("Establishing Connection. Please wait...");
try{

serverSocket =new ServerSocket(58342);
System.out.println("Serever Started.");
}catch(Exception e)
{
System.out.println(e.getMessage());
}

while (true) {
try{
client = serverSocket.accept();
new ClientThread(client).start();
}catch(Exception e)
{
String err=e.getMessage();
if(err == null)
{
break;
}else{
System.out.println(e.getMessage());
}
}

}

客户端线程

public class ClientThread extends Thread{

private static Socket client;
private static String line="";
private static DataInputStream input = null;
private static DataOutputStream output = null;

public ClientThread(Socket serv)
{
try {
client =serv;
input=new DataInputStream(client.getInputStream());
output=new DataOutputStream(client.getOutputStream());
System.out.println("New Client Connected to port:"+
client.getPort());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

最佳答案

ClientThread 中的所有变量都是静态!!

这意味着它们ClientThread的所有实例之间共享。因此,每次创建新的 ClientThread 时,它们都会被覆盖。

删除static,你应该没问题。

在我看来,您可能需要阅读一些内容 documentation .

关于java - 具有多客户端的 ServerSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137130/

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