详谈TCP网络编程的套接字和端口

电子说

1.3w人已加入

描述

当网络中的两台计算机进行通信时,除了确定计算机在网络中的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及相关资源。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分