通过前面的学习可知,在开发TCP 程序时,首先需要创建服务器端程序。JDK 的java.net包中提供了一个ServerSocket 类,该类的实例对象可以实现一个服务器端的程序。通过查阅API 文档可知,ServerSocket 类提供了多种构造方法。接下来就对ServerSocket 的构造方法进行逐一讲解。
(1)构造方法一:ServerSocket()。
使用该构造方法在创建ServerSocket 对象时并没有绑定端口号,这样的对象创建的服务器端没有监听任何端口,不能直接使用,需要继续调用bind(SocketAddress endpoint)方法将其绑定到指定的端口号上,才可以正常使用。
(2)构造方法二:ServerSocket(int port)。
使用该构造方法在创建ServerSocket 对象时,可以将其绑定到一个指定的端口号上(参数port 就是端口号)。端口号可以指定为0,此时系统就会分配一个还没有被其他网络程序所使用的端口号。由于客户端需要根据指定的端口号来访问服务器端程序,因此,端口号随机分配的情况并不常用,通常都会让服务器端程序监听一个指定的端口号。
(3)构造方法三:ServerSocket(int port,int backlog)。
该构造方法就是在第二个构造方法的基础上,增加了一个backlog 参数。该参数用于指定在服务器忙时,可以与之保持连接请求的等待客户数量,如果没有指定这个参数,默认为50。(www.xing528.com)
(4)构造方法四:ServerSocket(int port,int backlog,InetAddress bindAddr)。
该构造方法就是在第三个构造方法的基础上,增加了一个bindAddr 参数,该参数用于指定相关的IP 地址。该构造方法的使用适用于计算机上有多块网卡和多个IP 的情况,使用时可以明确规定ServerSocket 在哪块网卡或IP 地址上等待客户的连接请求。显然,对于一般只有一块网卡的情况,就不用专门的指定了。
在以上介绍的构造方法中,第二种构造方法是最常使用的。接下来学习ServerSocket 的常用方法,如表12-4 所示。
ServerSocket 对象负责监听某台计算机的某个端口号,在创建ServerSocket 对象后,需要继续调用该对象的accept()方法,接收来自客户端的请求。当执行了accept()方法之后,服务器端程序会发生阻塞,直到客户端发出连接请求时,accept()方法才会返回一个Socket对象用于和客户端实现通信,程序才能继续向下执行。
表12-4 ServerSocket 的常用方法
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。