私はネットワークプログラミングに不慣れです。JavaサーバーとCクライアント間のソケットを介してネットワーク接続を確立し、接続を無限に開いたままにすることは可能ですか?クライアント間でXMLデータを交換するために接続を開いたままにしておきたい。
3 に答える
理論的には、サーバーソケットを無期限に開いたままにしておくことは可能です。ただし、クライアント側のソケットではこれを行うことはできません。主な理由は、クライアント側のソケットがデータを処理するサーバー側のソケットに依存しており、サーバーソケットが接続を閉じる可能性があるためです。
接続を無期限に開いたままにしておくことは可能かもしれませんが、実際的な側面では、通常、そのようなソケットが永久に開いたままにならないようにします。ネットワークの停止、中間ルーターの設定ミス、帯域幅の枯渇、コンピューティング能力の不足などはすべて、ポイントツーポイント接続がせいぜい一時的なものであることを保証するために共謀します。
サーバー側のソケットは、接続要求を受信するソケット(独自のリターンソケットを持つ接続を生成する)であるため、接続がない場合でも開くことができることに注意してください。ソケットを別のコンピューターへのオープン接続と考える場合は、サーバーソケットが意味をなすように考えを変える必要があります。
(コンピューティングでは)無限のものはありませんが、両方のアプリケーションが実行されている限り、ソケット接続を開いたままにしておくことができます。
これは答えというよりは嘆願ですが、ユーザーとして私はソケットが常に落ちるのを見つけました。それらを無期限に開いたままにすることはできません。ソケットが予期せず閉じた場合は、(A)接続が切断されたことをユーザーに知らせ、(B)同じ接続を簡単に再確立できるようにしてください。さて、これにはゲームが関係していましたが、サーバーがなくなったことを認めないクライアントや、接続が切断されたサーバーと同じ人物であることを認識しないサーバーがありました。