Java socket异常

使用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 plain  copy
  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之间没有能连接成功,就会抛出此异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值