今回はJavaを学習してから初めてのエッセイですが、初心者がSocketプログラミングを学習する際に遭遇しやすい問題について書きます。教科書の例に従って、次のシングルスレッド ネットワーク通信コードを入力しました。
このコードは、ソケット プログラミングの初心者にとって必須のコードであり、ロジックは比較的単純です。しかし、最初は、TCPServer クラスと TCPClient クラスが実行された後、ストリームを介した相互作用に関する情報をコンソールに出力できませんでした。その理由をオンラインで検索し、基本的にはそうすべきであると判断しました。ブロックされた入力ストリームまたは出力ストリームです。しかし、長い間試してみましたが、問題はまだ解決されていません。その後、BufferedReader クラスのインスタンス メソッド readLine() が改行文字を読み取った後でのみ返されることを偶然発見しました。そのとき初めて、クライアントとサーバーによって出力に書き込まれた情報が原因であることがわかりました。ストリームには改行がまったくありませんでした。このように、readLine() は実際には決して返さないため、両端は出力ストリームにコンテンツを書き込まず、当然コンソールはコンテンツを出力できません。
この問題は実際にはかなり低レベルですが、初心者が解けないという保証はありません。細部に注意を払うよう、ここに簡単なメモを作成してください。
以上がシングルスレッドネットワーク通信のサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。