1.Socket概念
在Linux下,socket用整型int表示,套接字句柄和文件句柄都是int,因为socket是用于进程间网络通信的特殊文件类型,本质为内核借助缓冲区形成的伪文件,即我们可以把它当作一个文件来用
因为Linux的设计是“一切皆文件”,为了统一接口,方便编程,比如管道,进程,线程,设备驱动都定义为文件
读写套接字和读写文件一致,如调用read和write方法
区别是:文件主要用于本地持久化数据的读写;套接字用于网络进程间数据的传递
在TCP/IP协议中,IP地址+端口号来唯一标识网络通信中的一个进程,“IP地址(32位)+端口号(16位)”就对应一个socket,要建立连接,两个进程各自都会有两个socket来标识,两个socket组成的socket pair就唯一标识一个连接
在网络通信中,套接字一定是成对出现的,一端的发送缓冲区对应对端的接收缓冲区,我们使用同一个文件描述符来操作发送缓冲区和接收缓冲区
2.socket通信创建流程图
参考上篇博客的回声服务器端与客户端的实现