私はすでにソケットを次のように宣言しています:
serverAddr = InetAddress.getByName(this.ip);
socket = new Socket(serverAddr, port);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
ただし、次は機能しません。in.ready()常に false を返し、削除するとプログラムはフリーズしますString message = in.readLine();
private void receive() {
try {
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
System.out.println(isr.getEncoding());
BufferedReader in = new BufferedReader(isr);
if (in.ready()) {
String message = in.readLine();
if (message != null) {
if (listener != null) {
listener.receiveMessage(ip, message);
} else {
print("Client recieved: " + message);//
}
}
}
in.close();
} catch (Exception e) {
print("Error with input stream: " + e);
disconnect();
}
}
どうすればこれを解決できますか?
編集:
これは、私のサーバー クラスで送信がどのように見えるかです: out.println(message); out.flush(); これは、メッセージに何かを入れるたびにループで発生します。このループの後、out は閉じられます。