Привет, ребята, я пытаюсь подключить двух клиентов через сервер, каждый клиент подключается к серверу и создает новый поток, чтобы каждый клиент мог общаться с сервером, но как бы получить два клиенты, взаимодействующие через сервер?Подключение двух клиентов через сервер java
Сервер:
public void allowConnections(){
int i = 0;
try{
while(true){
new Thread(new TestT(draughtsSS.accept(),i)).start(); //listen for incoming connections
i++;
}
}
catch(IOException e){
System.out.println("Error :"+e.getMessage());
}
}
class TestT implements Runnable{
Socket s;
int gameNo;
Scanner in;
ObjectInputStream objectIn; // for retrieving new color array (down s socket)
ObjectOutputStream out;
PrintWriter outPW;
//String Player1;
//String Player2;
String playerIP;
String opponentIP;
int port = 50000;
TestT(Socket s, int gameNo){
this.s = s;
this.gameNo = gameNo;
}
public void run(){
try{
outPW = new PrintWriter(s.getOutputStream(), true);
out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(list);
in = new Scanner(s.getInputStream());
outPW.println("returnIP"); ///get the IP of the client
clientIPArray.add(in.nextLine()); /// add it to the clientIPArray
}
catch(IOException e){
e.getStackTrace();
}
JOptionPane.showMessageDialog(new JFrame(), s.getInetAddress().toString() +" has connected.");
list[gameNo] = "Game "+Integer.toString(gameNo);
gamesList.updateUI();
}
}
}
private void setupConnection(String serverIP, String port){
int portInt = Integer.parseInt(port);
serverIp = serverIP;
try{
IP = InetAddress.getByName(serverIP);
clientSocket = new Socket(IP,portInt);
JOptionPane.showMessageDialog(new JFrame(), "Successfully connected to Server");
in = new ObjectInputStream(clientSocket.getInputStream());
out = new PrintWriter(clientSocket.getOutputStream(), true);
scanIn = new Scanner(clientSocket.getInputStream());
a = (String[]) in.readObject();
if(scanIn.nextLine().equals("returnIP"))out.println(clientIp);
getGamesList(a);
Thread tss = new Thread(new ClientThread());
tss.start();
System.out.println("w");
}
catch(Exception e){
System.out.println("ErrorC :" +e.getMessage());
}
}
Говоря о предложениях, я бы использовал [Thrift] (http://thrift.apache.org/) или другую зрелую структуру, чтобы сделать для вас грязную работу. –
Спасибо за обмен полезной ссылкой! Я не думаю, что это проще, чем писать на java, но я буду иметь в виду) –
спасибо за предложения, теперь я пытаюсь получить массив, это законно? else if (Color []) objectIn.readObject() instanceof Color []) {// сделать что-то} –