我正在做一个客户端服务器聊天项目。客户端A和客户端B应该连接到服务器。我可以将客户端A与服务器连接,但是客户端B中出现问题。 我想将客户端A和客户端B与服务器连接。客户端A连接成功。并且我也想与客户A和客户B交流。但是如果有人帮助我,我会失败的,我真的会申请。 谢谢
String msgin = "";
try{
ss= new ServerSocket(5000);
s= ss.accept();
din= new DataInputStream(s.getInputStream());
dout= new DataOutputStream(s.getOutputStream());
while(!msgin.equals("exit")) {
msgin = din.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n Client A:\t"+msgin);
}
}catch(IOException e){
}
String msgIn = "";
try{
ss= new ServerSocket(6000);
s= ss.accept();
din= new DataInputStream(s.getInputStream());
dout= new DataOutputStream(s.getOutputStream());
while(!msgIn.equals("exit")) {
msgIn = din.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n Clint B:\t"+msgIn);
}
}catch(Exception e){
}
客户端A
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyClientSocket().setVisible(true);
}
});
try{
s = new Socket("127.0.0.1",5000);
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
String msgin="";
while(!msgin.equals("exit")){
msgin = din.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n Server:\t"+msgin);
}
}catch(Exception e){
}
客户端B
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyClientServerB().setVisible(true);
}
});
try{
s = new Socket("127.0.0.1",6000);
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
String msgIn="";
while(!msgIn.equals("exit")){
msgIn = din.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n Server:\t"+msgIn);
}
}catch(Exception e){
}
答案 0 :(得分:0)
为了允许多个客户端同时连接到服务器,您将需要使用多线程。尝试为每个连接的客户端创建一个新线程。服务器是长时间运行的程序,因此它应通过循环不断侦听新的客户端连接。
这是您可以考虑尝试的逻辑:
try {
serverSocket = new ServerSocket(8080);
} catch (IOException io) {
io.printStackTrace();
}
while (true) {
Socket clientSocket;
try {
clientSocket = serverSocket.accept();
} catch (IOException io) {
io.printStackTrace();
}
Thread t = new Thread(new Runnable() {
// handle each client independently
}
t.start();
}