首页 > 代码库 > Java socket异常

Java socket异常

Java socket异常

分类: Java

目录(?)[+]

使用Java socket编写程序时,通常会遇到几种种异常:BindException、UnknownHostException、ConnectException、SocketTimeoutException。

BindException

会发生在Socket或ServerSocket的bind()操作中,如果无法与本机指定的IP地址或端口绑定,就会抛出此异常。

有两种情况:

  • 指定的IP地址不在主机上
一台主机上可以装N个网卡,可以有多个IP地址,在绑定的时候需要指定绑定到哪一个IP地址上,如果指定的IP地址不在当前主机上,会抛出异常。
  • 指定的port已被占用

UnknownHostException

connect的时候,如果指定的主机名或IP地址无法识别,就会抛出此异常。

ConnectException

发生在connect中,有两种情况:

  • 服务器没有监听指定的端口
  • 服务器socket指定的backlog队列已满
两种情况的异常信息相同:
[plain] view plaincopy
  1. java.net.ConnectException: Connection refused: connect  
  2.     at java.net.PlainSocketImpl.socketConnect(Native Method)  
  3.     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)  
  4.     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)  
  5.     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)  
  6.     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)  
  7.     at java.net.Socket.connect(Socket.java:529)  
  8.     at java.net.Socket.connect(Socket.java:478)  

SocketTimeoutException

connect方法可以指定超时时间,如果在timeout之间没有能连接成功,就会抛出此异常

Java socket异常