关于Socket链接服务器可能产生的异常
来源:互联网 发布:楚门的世界细节 知乎 编辑:程序博客网 时间:2024/06/07 17:38
当Socket的构造方法请求链接服务器的时候,可能会产生以下异常:
UnknownHostException:当无法识别主机的名字或者ip地址的时候,就会抛出这种异常,比如下面的程序不输入参数直接运行,hostname自然不是可以识别的主机名称,于是就会报出这个异常。
ConnectException:当没有服务器进程监听指定的端口,或者说服务器进程拒绝链接的时候,就会抛出这种异常。比如运行改程序,参数设置为localhost 8888,那么因为主机没有进程监听8888,所以就会报出这个异常;还有一种情况是服务器进程拒绝链接。(这个情况请参看下一篇博客)
SocketTimeOutException:当等待链接超时,就会报出这个异常,比如将socket.connect(remoteAddr,10000)的第二个参数改为1(ms)那么无论再正确的服务器ip和端口,都会报出这个异常,异常产生的先后由catch的顺序决定。
BindException:如果无法把Socket对象和指定的主机ip地址或者端口绑定就会报出这个异常。
socket的connect(SocketAddress remoteAddr,int timeout)是用来链接服务器的相关设置
还有个方法是bind(SocketAddress localAddr,int port)用来将Socket对象和本地的ip地址或者端口绑定
SocketAddress localAddr = new InetSocketAddress(host,port);
socket.bind(localAddr);如果本机ip地址不是这个,就会报出异常
import java.io.IOException;import java.net.BindException;import java.net.ConnectException;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;import java.net.SocketTimeoutException;import java.net.UnknownHostException;public class ConnectTester {public static void main(String args[]) {String host = "hostname";int port = 25;if (args.length > 1) {host = args[0];port = Integer.parseInt(args[1]);// port = Integer.valueOf(args[1]);}new ConnectTester().connect(host,port);}public void connect(String host,int port){//创建SocketAddress对象,作为socket.connect(SocketAddress endPoint,int timeout)的参数SocketAddress remoteAddr = new InetSocketAddress(host,port);Socket socket = null;String result = "";try{long begin = System.currentTimeMillis();socket = new Socket();socket.connect(remoteAddr, 10000);//超时时间为1分钟long end = System.currentTimeMillis();result = (end - begin)+"ms";}catch(BindException e){result = "Address and port can't be binded";}catch(UnknownHostException e){result = "Unknown Host";}catch(ConnectException e){result = "Connection Refused";}catch(SocketTimeoutException e){result = "TimeOut";}catch(IOException e){e.printStackTrace();}finally{if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}System.out.println(remoteAddr +":"+result);}}
- 关于Socket链接服务器可能产生的异常
- Socket链接服务器的异常ConnectException的另一种异常形式
- 关于天气预报可能用到的网上链接
- Cocos2dx 链接Socket服务器
- 链接服务器 同义词 异常
- javamail的使用时可能产生的一些异常及处理方法
- delete可能产生的错误
- 关于检测SOCKET的异常断线
- Android关于Socket通信异常的问题
- 运行 Think In Java中的 RMI 示例可能产生的几种异常及解决
- RMI总结及可能产生的几种异常及解决
- 关于Struts + Hibernate 的项目产生的“非常异常”
- 关于Struts + Hibernate 的项目产生的非常异常
- 关于Memcached缓存设置过期时间时产生的异常
- 几个关于Windows2003域服务器的链接
- 关于Sql Server2005链接服务器的添加
- LOL链接不上服务器重装了还是显示连接不上服务器,可能的解决办法
- MakeUpper产生的异常
- VS2010 头文件和源文件的编码问题
- java批量修改文件后缀名
- 编程十年的他,为何只拿毕业三年的工资
- 在linux下打开chm文件
- 范式
- 关于Socket链接服务器可能产生的异常
- yii --memcached缓存的配置
- [黑马程序员]集合--Map
- java 配置生成工厂类的封装
- QT使用QgraphicView/Qpainter展示RGB/YUV图像
- ES、PES、PS以及TS码流
- 每六周自动班要完成任务
- android拨号器
- 数组作数据成员