2011-08-29 95 views
1

我曾经见过类似的问题,但我仍然无法解决此问题。我正在尝试进行中继聊天。我做了所有的冲洗。我什至尝试autoflush(与println)。但在发送给服务器的第一条消息之后,不会再发送成功的消息。我没有关闭printwriter。我检查了套接字,是的,它仍然连接,我打印了要发送的消息,似乎没有错。非常感谢帮助。PrintWriter仅发送第一条消息

这里是客户端代码的一部分:

public void initializeConnection(){ 
    try { 
     host = InetAddress.getLocalHost(); 
     clientSocket = new Socket(host.getHostAddress(), port); 
     outToServer = new PrintWriter(clientSocket.getOutputStream(),true); 
     String message = outMsgArea.getText()+"Hello"; 
     outToServer.println(message); 
     System.out.println(clientSocket.isConnected()); 
    } 
    catch(IOException ioEx) { 
     ioEx.printStackTrace(); 
    } 
} 

public void actionPerformed(ActionEvent e) 
{ 
    if(e.getSource()==quit){ 
     try { 
      outToServer.close(); 
      clientSocket.close(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
    } 
    else if(e.getSource()==button){ 
     if(outMsgArea.getText()!=null || !outMsgArea.getText().equals("")){ 
      /*try { 
       outToServer = new PrintWriter(clientSocket.getOutputStream(), true); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }*/ 
      String message = outMsgArea.getText()+"Hello"; 
      System.out.println(clientSocket.isConnected()); 
      outToServer.println(message); 
      outToServer.flush(); 
      //outToServer.println(message); 
      outMsgArea.setText(""); 
     } 
    } 
} 

服务器:

 while(true) { 
      try { 
       Socket connectionSocket = servSocket.accept(); 
       Scanner inFromClient = new Scanner(connectionSocket.getInputStream()); 
       String clientSentence = inFromClient.nextLine(); 
       System.out.println(clientSentence); 
      } 
      catch(IOException ioEx) { 
       ioEx.printStackTrace(); 
      } 
     } 
    } 
+0

你能分享你的代码吗? –

+0

发布一些代码。 –

+0

你也写过服务器吗?你可以在那里发布处理输入的代码吗? – Kevin

回答

2

我不认为

Socket connectionSocket = servSocket.accept(); 
Scanner inFromClient = new Scanner(connectionSocket.getInputStream()); 

应该是while循环中。

+0

如果我不会把它放在while循环中,那么它将如何能够不断接受来自客户端的消息? @。@我很困惑 – jayp

+0

我试过去掉它。它的工作!谢谢!!!!! – jayp

+0

然后你应该接受这个答案。 –