Java PrintWriter只发送第一条消息

Java PrintWriter只发送第一条消息,java,printwriter,Java,Printwriter,我已经看到了一个类似的问题,但我仍然无法解决这个问题。我正在尝试做一个中继聊天。所有的冲洗都是我洗的。我甚至尝试了自动刷新(使用println)。但在我向服务器发送第一条消息之后,后续消息就不再发送了。我不会关闭打印机。我检查了插座,是的,它仍然连接,我打印了要发送的消息,似乎没有什么问题。非常感谢您的帮助 以下是客户端代码的一部分: public void initializeConnection(){ try { host = InetAddress.getLocal

我已经看到了一个类似的问题,但我仍然无法解决这个问题。我正在尝试做一个中继聊天。所有的冲洗都是我洗的。我甚至尝试了自动刷新(使用println)。但在我向服务器发送第一条消息之后,后续消息就不再发送了。我不会关闭打印机。我检查了插座,是的,它仍然连接,我打印了要发送的消息,似乎没有什么问题。非常感谢您的帮助

以下是客户端代码的一部分:

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();
            }
        }
    }
我不这么认为

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

应该在while循环中。

您也编写了服务器吗?你能在那里发布处理输入的代码吗?我还没有处理从服务器接收消息/服务器发送消息的问题。如果我不把它放在while循环中,那么它如何能够持续接收来自客户端的消息?@我很困惑