Java网络编程精解学习笔记(serverSocket)

构造ServerSocket
ServerSocket的构造方法有以下几种重载方法:
ServerSocket()
ServerSocket(int port)
ServerSocket(int port, int backlog)
ServerSocket(int port, int backlog, InetAddress bindAddr)
参数port表示端口,backlog表示请求队列,IentAddress表示绑定的服务器地址。
a>绑定端口:
除了第一个,其他构造方法都会绑定一个端口,例如:
ServerSocket ss = new ServerSocket(80);
如果绑定失败,则会抛出IOException。更确切来说是BindException,BindException是IOException的子类。绑定失败一般有两个原因:1.该端口已经别某个端口占用。2.用户不是超级管理员,不能绑定1-1023端口。如果端口指定的是0,则系统会默认分配给ServerSocket一个未被占用的匿名端口。由于客户端与服务器端连接需要知道服务器端的端口,所有不建议使用匿名端口。
b>设定客户端连接请求的长度:
当服务器进程运行时,会同时监听多个客户端连接请求。客户端的连接请求是由操作系统管理的,操作系统会把连接请求放入到一个先进先出的队列里,一般操作系统会规定队列的长度(一般是50)。当请求到达队列上限后其他请求就会被拒绝掉。只有当服务器执行serverSocket.accept(),把请求取出后,队列里才能腾出空位加入新的请求。
对于客户端来说,发出的连接请求加入到服务器队列则说明连接成功,客户端的socket构造方法返回。如果连接请求被拒绝,则会抛出ConnectionException。
backlog参数用于显示的指定队列的长度,指定的长度会覆盖操作系统指定的长度。但是有几种情况会依然采用操作系统指定的最大长度:

猜你喜欢

转载自www.cnblogs.com/maerzhaha/p/10030062.html