サーバーソケットに接続されたクライアントソケットがあります。サーバーは、接続中に時々クライアントにデータを送信します。現在、クライアントはwhileループを使用して、サーバーが何も送信していなくてもサーバーからデータを受信し続けています。
私の質問は、入力をリッスンするより効率的な方法はありますか?
ソケット接続用のスレッドを作成し、着信データがないときにスリープ状態にし、着信データがあるときに割り込みを送信することを考えています。それはうまくいきますか? スレッドをスリープ状態にすると、ソケット接続が切断されますか?
サーバーソケットを変更できず、接続を開始しません。
import java.io.*;
import java.net.Socket;
public class core_socket {
public static void main(String[] args) {
String host = ("192.168.100.206");
int port = 4025;
try {
Socket socket = new Socket(host, port);
System.out.println("created socket\n");
OutputStream os = socket.getOutputStream();
boolean autoflush = true;
PrintWriter out = new PrintWriter(socket.getOutputStream(), autoflush);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// read the response
boolean loop = true;
StringBuilder sb = new StringBuilder(8096);
while (loop) {
if (in.ready()) {
int i = 0;
while (i != -1) {
i = in.read();
sb.append((char) i);
}
loop = false;
}
}
// display the response to the out console
System.out.println(sb.toString());
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}