java网络编程2

时间:2023-11-26 12:39:32

在通信双方中,ServerSocket是服务器端负责接收的一方,它负责监听指定端口,其构造函数如下:

1、ServerSocket()  throws IOException;无参构造函数,之所以存在主要是因为如果一旦创建好socket,则其选项参数将无法设置,使用该方法可以在指定端口号地址等之前先设置参数。

2、ServerSocket(int port) throws IOException;指定监听端口号,当端口号已经被占用或者因为某些原因端口号不允许被使用时会抛出BindException。。

3、ServerSocket(int port,int backlog) throws IOException;指定监听的端口号和指定客户连接请求连接队列的长度。

4、ServerSocket(int port,int backlog,InetAddress bindAddr) throws IOException;可以指定要绑定的IP地址。

该类方法有:

public InetAddress getInetAddress():用于返回服务器绑定的IP地址;

public int getLoalPort():该方法用于返回绑定的端口号;

该类有几个选项可以在创建后指定:

1、SO_TIMEOUT:表示等待客户端连接的时间,方法为  public void setSoTimeout(int timeout) throws SocketException,public int getSoTimeout() throws IOException,设置时以ms为单位,如果设置为0表示永不超时。

2、SO_REUSEADDR:决定网络上有数据向旧的ServerSocket传递数据时是否允许新的ServerSocket绑定到与旧的ServerSocket同样的端口上,public void setResuseAddress(boolean in) throws SocketException,public boolean getResuseAddress() throws SocketEception,但是一定要在socket绑定到端口之前使用该方法设置。

3、SO_RCVBUF:表示服务器端用于接收数据的缓冲区的大小,单位为字节,publi void setReceiveBufferSize(int size) throws SocketException,public int getReceiveBufferSize() throws SocketException,该方法在ServerSocket绑定到端口前后都有效,除非要设置的size大于64KB则需要先设定后绑定。

4、public void setPerformeancePreferreces(int connectionTime,int latency,int bandwidth)。