java套接字可以';t使用BufferedWriter发送消息

java套接字可以';t使用BufferedWriter发送消息,java,Java,我正在尝试使用BufferedWriter从客户端或服务器到客户端向服务器发送消息。然而,什么也不会发送,但如果你向它发送消息,它会监听。我不确定我做错了什么,但我认为问题就在这里 ActionListener buttonActive= new ActionListener(){ public void actionPerformed(ActionEvent e) { messageTextArea.append(textMessage.

我正在尝试使用
BufferedWriter
从客户端或服务器到客户端向服务器发送消息。然而,什么也不会发送,但如果你向它发送消息,它会监听。我不确定我做错了什么,但我认为问题就在这里

ActionListener buttonActive= new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                messageTextArea.append(textMessage.getText()+ "\n");
                sendText = textMessage.getText();
            }
        };
        sendButton.addActionListener(buttonActive);

    private void startSending(){

        SwingWorker <Void, Void> sendingThread = new SwingWorker <Void, Void>(){
            protected Void doInBackground() throws Exception {

                BufferedWriter writer = null;
                writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
                while(connected){
                    writer.write(sendText);
                    writer.flush();
                }
                return null;
            }
        };
        sendingThread.execute();
    }
ActionListener按钮活动=新建ActionListener(){
已执行的公共无效操作(操作事件e){
messageTextArea.append(textMessage.getText()+“\n”);
sendText=textMessage.getText();
}
};
sendButton.addActionListener(buttonActive);
私有void startSending(){
SwingWorker sendingThread=新SwingWorker(){
受保护的Void doInBackground()引发异常{
BufferedWriter=null;
writer=newbufferedwriter(newoutputstreamwriter(connection.getOutputStream());
同时(连接){
writer.write(发送文本);
writer.flush();
}
返回null;
}
};
sendingThread.execute();
}

@垃圾神和@madProgrammer给了我一个使用printWriter的解决方案,这个解决方案很有效,但我想让我用
BufferedWriter
+
BufferedReader
OutputStream+InputStream
BufferedWriter
+
printWriter
,再做几个版本,但是,我想让
BufferedWriter
+
BufferedReader

您的代码确实发送数据。可能客户端正在调用
readLine()
?由于您不发送行终止符,它将永远阻塞


但是你的代码没有多大意义。在循环中写入相同的文本不可能是您想要的。而且根本没有打印阅读器

很抱歉,我刚刚看到printWriter,并假设有一个lol。如果我将连接保持在循环中,它不会保持连接运行吗?或者也许我想得太多了,我会把它改一下,看看是否合适。但我记得我在网上读到过,上面说我应该有两条线,一条听,一条听send@user62927当然可以使用两个线程,但这并不意味着发送线程应该在发送循环中继续旋转。它应该在有东西要发送的时候发送。我很早就用if语句if(sendText=!null)尝试了这个方法,但不起作用。但是是的,你的权利,客户端正在调用readline();是行终止符writer.newline()吗?