消息未在 Java 后发送给客户

Message not delivering to Client in Java

我在 Java 中有一个服务器-客户端程序,在我的服务器 UI 中,我有两个 JLabel,当我点击第一个 JLabel 消息时转到第一个客户端,但是当我再次单击它时,消息不会发送到客户端。有人可以指出我的代码有什么错误吗?

//服务器代码

 void connect_clients()
    {
        try {
            ServerSocket listener = new ServerSocket(7700);
            jButton1.setText("Server Running!");
            jButton1.setEnabled(false);
            try {
                while (true) {

                    socket = listener.accept();
                    try {
                            clientIP = socket.getLocalAddress().getHostName();
                        }    
                    catch(Exception e){}
                    }
            }
            catch(Exception e){}

            }
        catch(IOException ex)
        {
        }
    }
}                                    

private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
    PrintWriter out;
     try {
         out = new PrintWriter(socket.getOutputStream(), true);
         out.println("pc2");
     } catch (IOException ex) {
         Logger.getLogger(third_frame.class.getName()).log(Level.SEVERE, null, ex);
     }
}     

//客户端代码

 void connect_server()
    {
        try {
            // TODO code application logic here
            String serverAddress = JOptionPane.showInputDialog(
                    "Enter IP Address of a machine that is\n" +
                            "running the date service on port 9090:");
            s = new Socket(serverAddress, 7700);


            BufferedReader input =
            new BufferedReader(new InputStreamReader(s.getInputStream()));
            String answer = input.readLine();

            System.out.println(answer);
            answer = null;

        }
        catch (IOException ex) {
            Logger.getLogger(client_form.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

注意:Socket 在服务器和客户端中都是全局声明的。

客户端代码没有循环。

关于字符串答案= input.readLine();客户端等待接收消息。一旦它从服务器接收到文本,客户端执行就完成了。

客户端未编写为接收来自服务器的所有消息。

因此,如果您回顾服务器-客户端范式,服务器会主动侦听端口,一旦客户端向服务器请求某些内容。它处理请求。

另一方面,Client 不必主动监听服务器上发生的事情,这与 Client 存在的基本思想相矛盾。