0
我試圖使用BufferedWriter
從客戶端或服務器向客戶端發送消息到服務器。然而,沒有東西會發送,但是如果你發送消息它會聽。我不確定我在做什麼錯,但我認爲問題出在這裏。java套接字無法使用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();
}
@trashgod和@madProgrammer給我使用的PrintWriter我想我要使用BufferedWriter
+ BufferedReader
,OutputStream+ InputStream
和BufferedWriter
+ PrintWriter
幾個版本,它的作品,但一個解決方案,但是我想使BufferedWriter
+ BufferedReader
。
對不起,我剛剛看到printWriter,並假設有一個大聲笑。如果我將它保留在循環中,它不會保持連接運行嗎?或者也許我在想我會改變它,看看是否發送。但我確實記得在線閱讀,它說我應該有2個線程一個聽和一個發送 – user629283
@ user62927當然,你可以使用兩個線程,但這並不意味着發送線程應該繼續在發送循環中旋轉。當有東西要發送時它應該發送。 – EJP
我試過,如果發言如果(sendText =!null),但沒有工作。但是你的權利是客戶正在調用readline();是行結束符writer.newline()? – user629283