[英]ServerSocket with multi clients
要与多个客户端一起使用的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());
}
}
}
ClientThread
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
中的所有变量都是static
!
这意味着它们在ClientThread
所有实例之间共享 。 因此,每次您创建new ClientThread
时,它们都会被覆盖。
去除static
,你应该没事。
在我看来,您可能需要阅读一些文档 。
您必须在ClientThread的构造函数中进行I / O。
别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.