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 그러나 내가 BufferedWriter
+ BufferedReader
을 만들고 싶어, 나에게 작동하지만 난 내가 + BufferedReader
, OutputStream+ InputStream
BufferedWriter
및 + PrintWriter
BufferedWriter
를 사용하여 몇 버전을 만들고 싶어 PrintWriter를 사용하여 솔루션을 준 .
죄송합니다. 난 그냥 printWriter를보고 거기에 하나의 롤이 있다고 가정합니다. 루프에 보관하면 연결이 계속 실행되지 않습니까? 또는 어쩌면 나는 그것이 그것을 바꿀 것이다 그것을 생각하고 끝내고 있는지 보냅니다. 하지만 온라인으로 읽음을 기억하니 두 개의 스레드를 하나는 듣고 하나는 보낼 것을 말합니다. – user629283
@ user62927 확실하게 두 개의 스레드를 사용할 수는 있지만 보내는 스레드가 송신 루프에서 계속 회전해야한다는 것을 의미하지는 않습니다. 보낼 물건이있을 때 보내야합니다. – EJP
if (sendText =! null) if 명령으로 초기에 시도했지만 그게 효과가 없습니다. 하지만 클라이언트가 readline()을 호출하는 권리가 있습니다. 줄 종결 자 writer.newline()입니까? – user629283