Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java套接字编程中使用单个服务器创建多个客户端?_Java_Sockets - Fatal编程技术网

如何在java套接字编程中使用单个服务器创建多个客户端?

如何在java套接字编程中使用单个服务器创建多个客户端?,java,sockets,Java,Sockets,我正在尝试遵循Java套接字编程。 我的目标是创建多个客户端线程,它们发布它们的状态 所有这些都由同一台服务器监听 像这样的 1.服务器启动 2.客户端A已启动 3.客户端B已启动 4.客户A向客户B问好 5.客户B向客户A问好 6.客户A对客户B说“Hi2” 7.客户B对客户A说“Hi2” 8.客户A对客户B说“Hi3” 9客户B对客户A说“Hi3” 10客户A已完成 11客户B已完成 到目前为止,我尝试的是: MyServer.java App.java 它连接一个客户端,但第二个客户端未连

我正在尝试遵循Java套接字编程。 我的目标是创建多个客户端线程,它们发布它们的状态 所有这些都由同一台服务器监听

像这样的 1.服务器启动 2.客户端A已启动 3.客户端B已启动 4.客户A向客户B问好 5.客户B向客户A问好 6.客户A对客户B说“Hi2” 7.客户B对客户A说“Hi2” 8.客户A对客户B说“Hi3” 9客户B对客户A说“Hi3” 10客户A已完成 11客户B已完成

到目前为止,我尝试的是:

  • MyServer.java
  • App.java

  • 它连接一个客户端,但第二个客户端未连接。

    您的MyServer错误。它只接受一个客户机

        try (ServerSocket s = new ServerSocket(...);) {
            while (true) {
                Socket conn = s.accept();
                conn.getInetAddress().getHostName() + " : " + conn.getPort());
                new ServerConnection(conn).start();
            }
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    
    }
    
    对于每一位客户来说,都是这样的

    public class ServerConnection extends Thread {
    
        private Socket client_socket;
    
        public ServerConnection( Socket client_socket) {
            this.client_socket = client_socket;
        }
    
        public void run() {
            DataInputStream din = new DataInputStream(client_socket.getInputStream());
            DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            String str = "", str2 = "";
            int counter = 0;
            while (!str.equals("stop") && counter < 10)
            {
                str = din.readUTF();
                System.out.println("client says: " + str);
                //str2 = br.readLine();
                str2 = str +"server response ";
                dout.writeUTF(str2);
                dout.flush();
                counter ++;
            }
    
            din.close();
        }
    }
    
    公共类服务器连接扩展线程{
    专用套接字客户端(usocket),;
    公共服务器连接(套接字客户端\u套接字){
    this.client\u socket=客户端\u socket;
    }
    公开募捐{
    DataInputStream din=新的DataInputStream(client_socket.getInputStream());
    DataOutputStream dout=新的DataOutputStream(client_socket.getOutputStream());
    BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
    字符串str=“”,str2=“”;
    int计数器=0;
    而(!str.equals(“stop”)&计数器<10)
    {
    str=din.readUTF();
    System.out.println(“客户说:“+str”);
    //str2=br.readLine();
    str2=str+“服务器响应”;
    dout.writeUTF(str2);
    dout.flush();
    计数器++;
    }
    din.close();
    }
    }
    
    您的MyServer错误。它只接受一个客户机

        try (ServerSocket s = new ServerSocket(...);) {
            while (true) {
                Socket conn = s.accept();
                conn.getInetAddress().getHostName() + " : " + conn.getPort());
                new ServerConnection(conn).start();
            }
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    
    }
    
    对于每一位客户来说,都是这样的

    public class ServerConnection extends Thread {
    
        private Socket client_socket;
    
        public ServerConnection( Socket client_socket) {
            this.client_socket = client_socket;
        }
    
        public void run() {
            DataInputStream din = new DataInputStream(client_socket.getInputStream());
            DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            String str = "", str2 = "";
            int counter = 0;
            while (!str.equals("stop") && counter < 10)
            {
                str = din.readUTF();
                System.out.println("client says: " + str);
                //str2 = br.readLine();
                str2 = str +"server response ";
                dout.writeUTF(str2);
                dout.flush();
                counter ++;
            }
    
            din.close();
        }
    }
    
    公共类服务器连接扩展线程{
    专用套接字客户端(usocket),;
    公共服务器连接(套接字客户端\u套接字){
    this.client\u socket=客户端\u socket;
    }
    公开募捐{
    DataInputStream din=新的DataInputStream(client_socket.getInputStream());
    DataOutputStream dout=新的DataOutputStream(client_socket.getOutputStream());
    BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
    字符串str=“”,str2=“”;
    int计数器=0;
    而(!str.equals(“stop”)&计数器<10)
    {
    str=din.readUTF();
    System.out.println(“客户说:“+str”);
    //str2=br.readLine();
    str2=str+“服务器响应”;
    dout.writeUTF(str2);
    dout.flush();
    计数器++;
    }
    din.close();
    }
    }
    
    亲爱的投票人,至少给出一个为什么投票的建议。亲爱的投票人,至少给出一个为什么投票的建议。
        try (ServerSocket s = new ServerSocket(...);) {
            while (true) {
                Socket conn = s.accept();
                conn.getInetAddress().getHostName() + " : " + conn.getPort());
                new ServerConnection(conn).start();
            }
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    
    }
    
    public class ServerConnection extends Thread {
    
        private Socket client_socket;
    
        public ServerConnection( Socket client_socket) {
            this.client_socket = client_socket;
        }
    
        public void run() {
            DataInputStream din = new DataInputStream(client_socket.getInputStream());
            DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            String str = "", str2 = "";
            int counter = 0;
            while (!str.equals("stop") && counter < 10)
            {
                str = din.readUTF();
                System.out.println("client says: " + str);
                //str2 = br.readLine();
                str2 = str +"server response ";
                dout.writeUTF(str2);
                dout.flush();
                counter ++;
            }
    
            din.close();
        }
    }