2015-04-23 126 views
0

我有一个服务器和客户端,在我的服务器用户界面中,我有3个JLabel使用MouseClick我与连接到我的服务器的个人客户端进行通信。当我点击JLabel1消息时,Client1将在Client1收到消息时回应,但它在收到消息时不响应服务器。希望有人指导我的代码有什么问题。服务器没有收到消息 - Java

// SERVER

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

        socket = listener.accept(); 
        socketList.add(socket); 

      //RECIEVE METHOD FROM CLIENT WILL COME HERE. 

       } 

      } 
     catch(IOException ex) 
     { 
      JOptionPane.showMessageDialog(null, "5"+ex); 
     } 
    } 
*******here when i click my jlabel1,message is goign to 1st client ,it should respond on seeing the message from client. but it is not.**** 




private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {          

    PrintWriter out; 
    try { 
     socket = socketList.get(0); 
     //JOptionPane.showMessageDialog(null, socket); 
     out = new PrintWriter(socket.getOutputStream(), true); 
     out.println("PC 1"); 

    } catch (IOException ex) { 
    JOptionPane.showMessageDialog(null, "1"+ex);} 

// CLIENT

void connect_server() throws IOException 
    { 
     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); 

      while(true){ 
       BufferedReader input = 
      new BufferedReader(new InputStreamReader(s.getInputStream())); 
      String answer = input.readLine(); 
      System.out.println(answer); 
       if(answer != null) 
       { 

        //respond method to server will come here. 
        JOptionPane.showMessageDialog(null,"Answer is not null"); 
       } 

      } 

      } 

回答

0

您必须创建循环外BufferedReader;实际上与插座同时。如果readLine()返回null您应该关闭它。