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キューは でいっぱいです.
どちらの場合も例外情報は同じです.
SocketTimeoutException
Connectメソッドでは、タイムアウト時間を指定できます.timeout間で接続に成功しなかった場合、この例外が放出されます.
BindException
この例外は、SocketまたはServerSocketのbind()操作で発生し、ネイティブが指定したIPアドレスまたはポートにバインドできない場合に放出されます.
次の2つのケースがあります.
1台のホストにN個のネットカードを入れることができて、複数のIPアドレスがあって、バインドする時どのIPアドレスにバインドするかを指定する必要があって、指定したIPアドレスが現在のホストにないならば、異常を投げ出すことができます.
UnknownHostException
connectの場合、指定したホスト名またはIPアドレスが認識できない場合、この異常が投げ出されます.
ConnectException
Connectでは、次の2つの状況が発生します.
どちらの場合も例外情報は同じです.
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間で接続に成功しなかった場合、この例外が放出されます.