Java socket異常

1248 ワード

Java socketを使用してプログラムを作成する場合、BindException、UnknownHostException、ConnectException、SocketTimeoutExceptionなど、通常いくつかの例外が発生します.
BindException
この例外は、SocketまたはServerSocketのbind()操作で発生し、ネイティブが指定したIPアドレスまたはポートにバインドできない場合に放出されます.
次の2つのケースがあります.
  • 指定IPアドレスはホスト上の
  • ではない.
    1台のホストにN個のネットカードを入れることができて、複数のIPアドレスがあって、バインドする時どのIPアドレスにバインドするかを指定する必要があって、指定したIPアドレスが現在のホストにないならば、異常を投げ出すことができます.
  • 指定portは
  • 占有されている.
    UnknownHostException
    connectの場合、指定したホスト名またはIPアドレスが認識できない場合、この異常が投げ出されます.
    ConnectException
    Connectでは、次の2つの状況が発生します.
  • サーバは、指定されたポート
  • をリスニングしていません.
  • サーバsocket指定backlogキューは
  • でいっぱいです.
    どちらの場合も例外情報は同じです.
    java.net.ConnectException: Connection refused: connect
    	at java.net.PlainSocketImpl.socketConnect(Native Method)
    	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    	at java.net.Socket.connect(Socket.java:529)
    	at java.net.Socket.connect(Socket.java:478)

    SocketTimeoutException
    Connectメソッドでは、タイムアウト時間を指定できます.timeout間で接続に成功しなかった場合、この例外が放出されます.