Estou criando um manipulador de clientes para meu aplicativo de bate-papo para que eu possa ter mais de um cliente conectado, mas, na verdade, são apenas 2 conexões e as 2 conexões são executadas em 2 threads (1 cliente por thread). Agora, tudo funciona bem e o servidor obterá informações de ambos os clientes, mas depois de um tempo (1 segundo), cada cliente falará com o último e permanecerá conectado, e o servidor interromperá a execução da outra thread na outra conexão, e não tenho ideia do porquê.
Código do servidor
import java.io.IOException;
import java.net.ServerSocket;
public class server{
public static ServerSocket serverSocket;
public static void main(String[] args)throws IOException{
serverSocket = new ServerSocket(1234);
clientHandler clientHandler = new clientHandler();
Thread clienThread = new Thread(clientHandler);
Thread clienThread2 = new Thread(clientHandler);
clienThread.start();
clienThread2.start();
}
}
código do manipulador do cliente
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class clientHandler implements Runnable{
public static server server = new server();
public static Socket socket;
public static BufferedReader in;
public static PrintWriter out;
@Override
public void run(){
try {
socket = server.serverSocket.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
while(true){
String msg = in.readLine();
System.out.println(msg);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Tentei usar 2 soquetes de servidor em 2 portas diferentes, mas tive o mesmo problema, então ajude.