两个进程进行通讯最基本的前提是能唯一标识一个进程,在本地进程通讯中可以使用 PID 来唯一标识一个进程,但 PID 在本地是唯一的,网络中两个进程 PID 冲突几率很大,这就要通过其他手段来唯一标识进程了,IP 层的 ip 地址可以唯一标示主机,再结合 TCP 端口号就可以唯一标示某个主机的进程。
唯一标示网络中的进程后,就可以利用 Socket 通信了,到底什么是 Socket 呢?我们经常把 Socket 翻译为套接字,Socket 是在应用层和传输层之间的一个抽象层,它把 TCP/IP 层复杂的操作抽象为几个简单的接口供应用层调用,从而实现进程在网络中通信。
Socket 编程,可以基于 TCP 或 UDP 实现,Java 为 Socket 编程封装了几个重要的类,我们来认识一下:
Socket (TCP)
Socket 类实现了一个客户端 Socket,作为两台机器通信的终端,默认采用的传输层协议为可靠的 TCP 传输协议,主要方法如下: