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()吗?