Socket类的用法
来源:互联网 发布:mac dsd播放器 编辑:程序博客网 时间:2024/06/01 09:24
Socket用法详解<1>
Socket的构造方法有以下几种重载形式:
(1) socket()
(2) Socket(InetAddress address,int port)throws UnknownHostException,IOException
(3) Socket(InetAddress address,int port,InetAddress localAddr,int localPort)throws IOException
(4) Socket(String host,int port)throws UnknownHostException,IOException
(5) Socket(String host,int port,InetAddress localAddr,int localPort)throws IOException
一、设立等待建立连接的超时时间
当客户端的Socket构造方法请求与服务器连接时,可能要等待一段时间。默认情况下,Socket构造方法会一直等下去,直到连接成功,或者出现异常。Socket构造方法请求连接时,受底层网络的传输速度的影响,可能会处于长时间的等待状态。如果希望设定等待连接的时间,该如何做呢?
此时就需要用到第一个不带参数的构造方法:
1 Socket socket=new Socket();2 SocketAddress remoteAddr=new InetSocketAddress("localhos",8000);3 socket.connect(remoteAddr,60000);
以上代码用于连接到本地机器上的监听8000端口的服务程序,呆呆连接的最长时间为一分钟。如果在一分钟内连接成功,则connect()方法顺利返回;如果在一分钟内出现异常,在抛出该异常。如果在一分钟后,既没有连接成功,也没有出现其他异常,那么会抛出SocketTimeoutException。Socket类的Connect(SocketAddress endpoint,int timeout)方法负责连接服务器,参数endpoint指定服务器的地址,参数timeout设定超时时间,以毫秒为时间,吐过参数timeout设为0,表示永远不会超时。
二、设定服务器的地址
除了第一个不带参数的构造方法,其他构造方法都需要在参数中设定服务器的地址,包括服务器的IP地址或主机名,以及端口:
1 Socket(InetAddress address,int port) //第一个参数address表示主机的IP地址;2 Socket(String host,int port) //第一个参数表示主机的名字
InetAddress类表示服务器的IP地址,InetAddress类来提供了一系列静态工厂方法,用于构造自身的实例,例如:
//返回本地主机的IP地址InetAddress addr1=InetAddress.getLocalHost();//返回代表"222.34.5.7"的IP地址InetAddress addr2=InetAddress.getByName("222.34.5.7");//返回域名为"www.cnblogs.com"的IP地址InetAddress addr3=InetAddress.GetByName("www.cnblogs.com");
三、设定客户端的地址
在一个Socket对象中,既包括远程服务器的IP地址和端口信息,也包含本地客户端的IP地址和端口信息。默认情况下,客户端的IP地址来自客户程序所在的主机,客户端的端口则有操作系统随机分配。Socket的类还有两种构造方法允许显示的设置客户端的IP地址和端口:
1 //参数localAddress和localPort用来设置客户端的IP地址和端口。2 Socket(InetAddress address,int port,InetAddress localAddr,int localPort)throws IOException3 Socket(String host,int port,InetAddress localAddr,intlocalPort)throws IOException
如果一个主机同时属于两个以上的网络,他就可能拥有两个以上的IP地址。例如,一个主机在Internet网络中的IP地址为“222.67.1.34”,在一个局域网中的IP为“112.5.4.3”。假设这个主机上的,客户端程序希望和同一个局域网上的一个服务器程序通信,客户可按照如下方式构造Socket对象:
1 InetAddress remoteAddr=InetAddress.getByName("112.5.4.45")2 InetAddress localAddr=InetAddress.getByName("112.5.4.3")3 Socketsocket=new Socket(remoteAddr,8000,localAddr,2345)//客户端使用端口2345
四、客户连接服务器是可能跑出的异常
当Socket的构造方法请求连接服务器是,可能会抛出下面的异常。
*UnknownHostException:如果无法识别主机的名字或者IP地址,就会抛出这种异常。
*ConnectException:如果没有服务器进程监听指定的端口,或者服务器进程拒绝连接,就会抛出这种异常。
*SocketException:如果等待连接超时就会抛出这种异常。
*BindException:如果无法把Socket对象与指定的本机IP地址或端口绑定,就会抛出这种异常。
- Socket类的用法
- Socket类的用法
- Socket select的用法
- socket 的selecte用法
- java socket的用法
- socket 的用法
- socket的用法
- 普通Socket的用法
- Socket中select()的用法
- Java中的Socket的用法
- socket.io的基本用法
- 本地socket的select用法
- Java中Socket的用法
- Java中的Socket的用法
- Java 中Socket的用法
- socket编程——介绍CAsyncSocket类的用法
- Socket用法
- socket()用法
- 南邮 OJ 1210 半数集问题
- comparator接口与Comparable接口的区别
- NSMakeRange,substringWithRange,substringToIndex,substringFromIndex
- Buffer类的详解(转)
- Linux awk命令简介
- Socket类的用法
- hibernate注解方式实现一对多映射
- ldconfig详解
- 黑马程序员-IOS基础之OC框架(Foundation)
- hdu 5316 多校(3)
- android去掉头部标题栏
- 无法解析的外部符号 dll中的函数不能识别
- OC基础回顾(九)对象初始化
- tmux的一些使用命令