繁体   English   中英

serversocket上的客户端-服务器聊天程序问题

[英]client-server chat program problem on serversocket

我正在做一个客户端服务器聊天项目。 客户端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){

}

为了允许多个客户端同时连接到服务器,您将需要使用多线程。 尝试为每个连接的客户端创建一个新线程。 服务器是长时间运行的程序,因此它应通过循环不断侦听新的客户端连接。

您可以考虑尝试以下逻辑:

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();

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM