您的位置:首页 > 其它

三. ServerSocket用法

2016-03-19 14:40 344 查看

一.构造ServerSocket

构造方法

(1)new ServerSocket( )

(2)new ServerSocket(int port,int backlog)

(3)new ServerSocket(int port,int backlog,InetAddress bindAddr)

除第一种方法外,其他都会立即尝试绑定端口.第一种方便添加ServerSocket的参数,bind(SocketAddress address)手动绑定端口

设定客户端连接请求队列长度

管理客户连接请求的任务是操作系统完成的,操作系统把连接请求存在一个队列中.该队列默认长度为50,当超过这个队列的长度限制时,操作系统会拒绝新的客户端连接请求.只有当ServerSocket的accept()方法从就绪队列中取出连接,使得队列有空位置时才能继续加入新请求.

SoerSocket构造方法中的backlog参数显式指定请求队列的长度.当一下2种情况,该参数值无效 :

(1)backlog值 > 操作系统的最大队列长度

(2)backlog参数值小于等于0

关闭ServerSocket

Serversocet的close( )方法是服务器释放占用的端口,并断开与所有客户的连接.当开启ServerSocket的线程执行完毕,ServerSocket会自动关闭.只要一个ServerSocket对象与一个端口绑定过,无论其是否已经close,isBound()方法永远返回true.所以判断ServerSocket是否正在与端口绑定:

serverSocket.isBound() && !serverSocket.isClosed()


二. ServerSocket选项

SO_TIMEOUT

该参数表示ServerSocket的accept()方法等待客户端连接的超时时间,该值默认为0,永不超时. 服务器的ServerSocket的accecpt()方法在没有客户端连接请求时会阻塞,只有接受了一个客户端请求,才能从accecpt()方法返回.setServerSocket(6*1000)表示accept()方法在阻塞6秒后一定返回,若没有客户端连接,抛出SocketTimeoutExeption

SO_REUSEADDR选项

SO_RCVBUF选项

设定接收数据的缓冲区大小
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: