初めて PHP ソケット サーバー用のクライアントを作成しようとしましたが、少し問題が発生し、情報が殺到しています。
サーバーでは、開いている接続が必要です。入力ストリームの解析を開始するようにスレッドに通知する前に、データを受信するまでクライアント側を待機させます。これは、ループを使用せずに達成できますか? lock.notify() を呼び出せるようにしたいです。
私もNIOを見ていましたが、これは私が望むものの実行可能なオプションですか? ここに私がこれまでに持っているコードがありますが、繰り返しますが、for(;;) を避けようとしているだけで、受信したメッセージは JSON である可能性が高いため、キューに入れることさえできます。
Thread serverRecieve = new Thread(new Runnable() {
@Override
public void run() {
try {
for (;;) {
if (in != null) {
String line;
while ((line = in.readLine()) != null) {
sout(line);
}
} else {
sout("inputstream is null! Waiting for a second to test again");
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(WebManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
} catch (IOException ex) {
Logger.getLogger(WebManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
みんなありがとう!PS: ここでたくさんのソケット スレッドを調べましたが、必要なものを尋ねるだけの方が簡単だと判断しました。