TCP通信
目录
3.ServerSocket(int port, int backlog)
4.ServerSocket(int port, int backlog, InetAddress bindAddr)
2.Socket(String host,int port)
3.Socket(InetAddress address, int port)
在JDK中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服器端,一个是Socket类,用于表示客户端。通信时,首先创建代表服务器端ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表户端的Socket 对象向服务器端发出连接请求,服务器端响应请求,两者建立连接开始信。解释一下两者:
1.ServerSocket
在开发TCP程序时,首先需要创建服务器端程序。而JDK的java.net 包中提供了一个 ServerSocket类,该类的实例对象可以实现一个服务器端的程序。通过查阅 API 文档可知,ServerSocket 类提供了多种构造方法。一些常用方法:
1.ServerSocket()
使用该构造方法在创建ServerSocket对象时并没有绑定端口号,这样的对象创建的服务器端没有监听任何端口,不能直接使用,还需要继续调用 bind(SocketAddressendpoint)方法将其绑定到指定的端口号上,才可以正常使用。
2.ServerSocket(int port)
使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指定的端口号上(参数port就是端口号)。端口号可以指定为0,此时系统就会分配一个还没有被其他网络程序所使用的端口号。由于客户端需要根据指定的端口号来访服务器端程序,因此端口号随机分配的情况并不常用,通常都会让服务器端程!监听一个指定的端口号。
3.ServerSocket(int port, int backlog)
该构造方法就是在第二个构造方法的基础上,增加了一个backlog参数。该参数用于指定在服务器忙时,可以与之保持连接请求的等待客户数量,如果没有指定这个参数,默认为50。
4.ServerSocket(int port, int backlog, InetAddress bindAddr)
该构造方法就是在第三个构造方法的基础上,还指定了相关的IP地址,这种情况适用于计算机上有多块网卡和多个IP的情况,我们可以明确规定 ServerSocket在哪块网卡或 IP地址上等待客户的连接请求。显然,对于一般只有一块网卡的
情况,就不用专门的指定了。
上面的构造方法中,第二个构造方法是最常使用的。了解了如何通ServerSocket的构造方法创建对象,接下来学习一下ServerSocket 的常用方法,
2.Socket
ServerSocket对象可以实现服务端程序,但只实现服务器端程序还不能完成通信,此时还需要一个客户端程序与之交互。为此 JDK提供了一个Socket类,用于实现TCP客户端程序。通过查阅 API文档可知 Socket 类同样提供了多种构造方法,接下来就对Socket的常用构造方法进行详细讲解。
1. Socket()
使用该构造方法在创建Socket对象时,并没有指定IP地址和端口号,也就意味
着只创建了客户端对象,并没有去连接任何服务器。通过该构造方法创建对象后
还需调用 connect(SocketAddress endpoint)方法,才能完成与指定服务器端的
接,其中参数endpoint用于封装IP地址和端口号。
2.Socket(String host,int port)
使用该构造方法在创建Socket对象时,会根据参数去连接在指定地址和端口
运行的服务器程序,其中参数host接收的是一个字符串类型的IP地址。
3.Socket(InetAddress address, int port)
该方法在使用上与第二个构造方法类似,参数address用于接收一个InetAddress类型的对象,该对象用于封装一个IP地址。在上面Socket的构造方法中,最常用的是第一个构造方法。