単体テストを実装するには、単純なクライアントとサーバー間の通信が必要です。ServerSocket accept()がソケットを "listen"モードにするのを待つ
マイ手順:
- 確認し、いくつかのリクエストを行い、クライアント
- を作成リッスンモード(serverSocket.accept())にサーバソケットを置くために、サーバースレッドのサーバースレッド
- 待ち
- を作成します。応答
基本的に、私はステップ#2に問題があります。私は、サーバーソケットが "listen"状態になったときに私に信号を送る方法を見つけることができません。この場合、 "accept"への非同期呼び出しが行いますが、javaはこれをサポートしていません(非同期チャネルのみをサポートしているようですが、ドキュメントに従って "accept()"メソッドと互換性がありません)。
私は単純な「スリープ」を入れることができますが、それは実際にはプロダクションコードの解決策ではありません。
要約すると、ServerSocketがスリープおよび/またはポーリングを使用せずにリッスンモードに入ったときを検出する必要があります。
はい、あなたは正しいです。その奇妙なドキュメントはそれについて何も言わない。しかし、それはおそらくその実装固有の(またはTCPプロトコルのみに固有の)ためです。 – inazaruk
@inazarukドキュメントは、いくつかの場所でバックログのキューについて語っています。 – EJP