电子说
当网络中的两台计算机进行通信时,除了确定计算机在网络中的IP地址外,还需要确定计算机中的一个端口,端口并不是实际的物理设备,它是一个应用程序,这个应用程序来负责两台计算机的通信。
一个IP地址标识了一台主机(服务器),主机可以提供多种服务,如web服务、ftp服务、远程桌面等。主机的每个服务都会等待客户端的连接,客户端如何区别这些服务呢?这就需要端口来区分了。
端口被规定为一个在0~65535之间的整数,这个整数和提供服务的应用程序关联。如web服务一般是80端口,ftp服务一般是21端口、远程桌面一般是3389端口。
当我们通过客户端浏览器访问一个网站时,在浏览器地址栏中输入该网站的网址,并不需要输入80端口号。这是因为web服务默认就是80端口号,当客户端以http协议访问主机时,主机会默认这是访问web服务。
在同一台计算机上端口号不能重复,否则,就会产生端口号冲突。程序员或计算机管理员在分配端口号时,需要遵循下面的规则:
(1)1~1023之间的端口号,是由ICANN来管理的,不能分配给用户自己的应用程序;
(3)1024~5000一般被TCP/IP程序作为临时端口号使用;
(4)分配的端口号不能发生冲突;
(4)应分配数值大于5000的端口号给用户开发的应用程序。
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示,区分不同应用程序进程间的网络通信和连接,套接字主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。
TCP使用套接字传输数据
在Java语言中,使用Socket类来创建套接字,使用Socket类在两台计算机之间进行通信时,是有主次之分的,一个称为服务器程序,一个称为客户端程序。在服务器端使用ServerSocket类创建套接字,主要是监听指定的端口,等待客户端的连接;在客户端使用Socket类创建套接字,用于连接服务器端的套接字。服务器端和客户端的套接字的IP地址和端口号要一致。
客户端和服务端通信过程
在服务器端创建ServerSocket对象,并绑定监听端口。调用ServerSocket对象的accept()方法监听客户端的请求。与客户端建立连接后,它会返回一个已连接的Socket对象,并通过输入流读取客户端发送的请求信息,然后通过输出流向客户端发送响应信息,最后关闭socket及相关资源。
在客户端创建Socket对象,需要指定连接服务器的地址和端口号,和服务器建立连接后,通过输出流向服务端发送请求信息,然后通过输入流获取服务器的响应信息,最后关闭socket及相关资源。
全部0条评论
快来发表一下你的评论吧 !