25.3 端口与套接字

什么是端口?什么是套接字?下面将围绕这两个概念进行讲述。网络程序设计中的端口(Port)并非真实物理存在的,而是一个假想的连接器。计算机提供了很多种服务,例如HTTP、FTP、DNS等。那么客户机必须明确地知道自己要连接的是服务器上的哪一个服务,是HTTP、FTP或者DNS。

为此就引入了一个端口的概念。端口被规定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP使用的是21端口,那么客户必须通过80端口才能连接到服务器的HTTP服务,而通过21端口,才能连接到服务器的FTP服务器上。

其实1~1023之间的端口已经被系统占用了,因此在定义自己的端口时,不能使用这一段的端口号,而应该使用1024~65535之间的任意端口号,以免发生端口冲突。

那什么是套接字呢?网络程序中的套接字用来将应用程序与端口连接起来,套接字是一个软件实现,也是一个假想的装置。

在Java中,将套接字抽象化为类,所以程序只需创建Socket类的对象,就可以使用套接字。那么Java是如何实现数据传递的呢?答案是使用Socket的流对象进行数据传输,Socket类中有输入和输出流。

使用Socket进行的通信都称为Socket通信。将编写的Socket类,用在Socket通信程序中,这就称为Socket网络程序设计。下面将介绍Socket网络程序设计中,如何进行TCP程序设计。