11

JavaSocketクラスには2つのメソッドがisClosedありisConnected、ソケットが閉じているか接続されているかをそれぞれチェックします。開いているだけのTCPソケットと開いて接続されているTCPソケットの違いと、UDPとの違いを知りたいと思いました。

4

2 に答える 2

11

簡単に言うと、開いSocketているソケットは、接続を待機しているか、別のソケットに正常に接続されているソケットです。ソケットが閉じられると、このソケットは接続に使用できなくなり、そのリソースはすでに解放されていることを意味します。接続されているAは、ソケットが別のソケットに接続されていることを意味します。SocketSocketSocket

だからSocket缶..

  • 開いていると同時に接続されている。
  • 開いていると同時に接続されていない。
  • 閉じているときは接続されません。

アップデート

@ブライアンから

どうやら、TCPソケットには半分閉じた状態または半分開いた状態があります。(今日の)使用法は元の意味とは異なります。このリンクの詳細。

于 2012-10-02T05:47:08.350 に答える
7

このページでは、ソケットの状態に関するかなり良い概要を説明しています:http: //diranieh.com/SOCKETS/SocketStates.htmおよびTCPソケットとUDPソケットの違い。特に:

  • 状態「オープン」(TCPおよびUDP):名前のないソケットが作成されました。名前のないソケットは、ローカルアドレスとポートにバインドされていないソケットです。
  • 状態「接続済み」(TCPのみ):ローカルホストとリモートホストの間にアソシエーション(仮想回線)が確立されています。データの送受信が可能になりました。

java.net.DatagramSocketの新しい実装は、TCP / IPネットワーク状態の拡張をサポートしていることに注意してください。DatagramSocketは「接続済み」状態になることもあるため、データグラムソケットが決してない場合でも、isConnected()は必ずしもfalseを返しません。ネットワーク層で「接続」されています。特に、「DatagramSocketがリモートアドレスに接続されている場合、パケットはそのアドレスとの間でのみ送受信できます。デフォルトでは、データグラムソケットは接続されていません。」

詳細については、ソースJavaDocを参照してください。

于 2012-10-02T05:49:24.157 に答える