Socket,ServerSocket 用于TCP/IP协议
(1)Socket:
1.Socket 最常用构造方法:
<1>:public Socket(String host,int port);
host是连接所需服务器的名称或者ip地址 , port是端口号
2. 最常用的两个方法:
<1>:public OutputStream getOutputStream()
返回一个输出流,进行数据的传递;可以把返回的输出流进行再包装,传送数据更为方便
<2>:public InputStream getInputStream()
返回一个输入流,进行数据的读取;也可以把输入流进行包装,读取数据时更为快捷
3. 获取Socket的信息:
<1>:public InetAddress getInetAddress()
获得服务器的IP地址
<2>:public int getPort()
获得服务器的端口(一般由服务器随机设置的端口,与服务器端当初建立的时候端口不一致,稍微注意)
<3>:public InetAddress getLocalAddress()
获取本地的地址
<4>:public int getLocalPort()
获取本地的端口
4. 关闭socket的连接(很重要,如果一个连接结束之后,不再使用,一定记着关闭,否则服务器就会负载过重造成崩溃)
<1>:public void close()
关闭与服务器的连接
5. 设置socket的选项,一些常用的配置
<1>:public void setTcpNoDelay(boolean on)
默认为false,会先把数据缓存,到一定数量后一起发送;
如果设为true,则会立即发送数据,常用作游戏设计中,服务器需要快速的得到客户端的响应
<2>:public void setReuseAddress(boolean on)
当接收方的close()方法关闭socket时,网络上还有没发送到这个socket的数据,那么底层的socket不会立即释放本地端口,
会等待一段时间,确保收到了网络上收到的数据,然后再释放端口;当在这个时间段里,又重新使用这个端口,会发送异常,如果设置
属性为true,则会立即关闭底层socket,但是设置这个属性时,不能在创建socket的时候指定host,port;
<3>:public void setSoTimeout(int timeout)
设置接受数据时的等待超时时间
<4>:public void setReceiveBufferSize(int size)
设置接收数据的缓冲区的大小
<5>:public void setSendBufferSize(int size)
设置发送数据缓冲区的大小
(2):ServerSocket
1. 构造函数
<1>public ServerSocket(int port)
port:指定端口号
<2>public ServerSocket(int port,int backlog)
port是端口号,backlog,指定请求队列的长度
2. 最常用的一个方法
<1>:public Socket accept()
接受一个客户的请求,很重要的一个方法,建立与客户的联系;
是一个阻塞方法,如果没有用户的请求,会一直等待
3. 获取一些信息
<1>:public InetAddress getInetAddress()
<2>:public int getLocalPort()
4. ServerSocket选项
<1>public void setSoTimeout(int timeout)
· 设置等待客户连接的超时时间
<2>public void setReuseAddress(boolean on)
设置是否允许重用服务器锁绑定的地址
<3>public void setReceiveBufferSize(int size)
设置接受数据的缓冲区的大小