Java Socket网络编程
林志红
(北京信息职业技术学院)
摘 要 : Java 提 供 了 两 个 类 , 一 个 是 Socket 类 , 另 一 个 是 ServerSocket
类。ServerSocket 专门用于服务器端监听客户请求,一旦收到请求就生成一个新
的 socket 与客户端交换数据,而 ServerSocket 继续监听其它客户端的请求。在
连接成功时,应用程序两端都会产生一个 Socket 实例,操作这个实例,便可完成
所需的数据交换。
关键词:ServerSocket 类, Socket 类, Java Socket 网络编程
从前面的课程中,我们已经了解到在客户机/服务器模式中, 服务器处于被动的一方,始
终在监听服务端口。如果要发起一次通信,客户端需要主动创建与服务器连接的 Socket 套接
字, 向服务器发出连接请求,服务器端收到了客户端的请求, 也会创建与客户连接的 Socket.
Socket 可看做是通信连接两端的收发器, 服务器与客户端都通过 Socket 来收发数据。
在了解了 Socket 通信的基本过程之后,就可以开始学习 Socket 编程了。Java 语言为客户
机/服务器模型的实现提供了 Socket 编程接口,今天我们的目标就是学习如何用 Java Socket
编程接口实现最基本的通信功能
在开始编程之前,我们先对一次完整的 Socket 通信过程做一个动作分解。总体说来,一
次 Socket 通信基本分为四个步骤:1. 建立网络连接 2. 打开连接到 Socket 的输入/输出流 3.
通过已打开的 I/O 流进行数据读/写操作 4. 关闭打开的 I/O 流和 Socket
第一步,建立网络连接。网络连接的一端是服务器,另一端是客户端,服务器端首先要
监听端口,一旦监听到连接请求,还要生成一个 Socket 与客户端的 Socket 联通;客户端要
用服务器端的 IP 地址和端口号建立一个 Socket,这样才能向服务器端发出连接请求。这些步
骤都可以用 Java 提供的编程接口完成。
看一下 Java 提供的接口 ServerSocket:
ServerSocket 是一个专门用来建立 Socekt 服务器的类,它可以用服务端口号作为参数来
创建服务器对象。示例代码如下:
ServerSocket server = new ServerSocket(9998);
这个示例代码的意思是用 ServerSocket 类建立了一个服务器,名字叫 server,server 将用
9998 端口对外提供服务。
ServerSocket 类有一个最重要的方法是 Accept()方法。 Accept 方法用于产生“阻塞”,
它使程序运行暂时“停留”在原地,直到有机会解除阻塞,然后程序继续往下运行。很显然,
这个机会就是客户端发来了连接请求。
所以建立了 Socket 服务器 server 后,下一步就是用 server 调用 accept()方法来实现对服
务端口的监听功能。示例代码如下:
Socket incoming = server.accept();
当没有客户端的连接请求时,accept()方法进入阻塞状态,一旦有客户端对该服务器
1 / 4
Java Socket 网络编程