Socket编程
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
Socket采用TCP协议提供了两台计算机之间的通信机制。客户端程序通过创建Socket对象就可以连接至服务器并请求远程服务。
当连接建立后,服务器端也会创建一个Socket对象,此时客户端和服务器就可以通过对Socket对象的写入和读取来进行通信了。
类java.net.Socket代表一个Socket,而类java.net.ServerSocket则为服务器程序提供了一种用来监听客户端请求并与他们建立连接的机制。
以下步骤描述了如何通过Socket实现两台电脑之间的通讯:
- 服务器实例化一个ServerSocket对象,表示通过服务器上的端口通信。
- 服务器调用 ServerSocket类 的
accept()
方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。 - 服务器正在等待时,一个客户端实例化一个Socket对象,指定服务器名称和端口号来请求连接。
- Socket类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则客户端通过Socket对象能够与服务器进行通信。
- 在服务器端,
accept()
方法返回服务器上一个新的Socket引用,该Socket连接到客户端的Socket。
一旦连接建立后,我们就可以采用I/O流进行通信了。每一个Socket都有一个输出流和一个输入流。客户端的输出流连接到服务器端的输入流,而客户端的输入流连接到服务器端的输出流。TCP是一个双向的通信协议,因此数据可以通过两个数据流在同一时间发送。
在线练习
{$ activeFileHint $}