网络服务器开发实战(3)——套接字(Socket)

1.Socket概念

在Linux下,socket用整型int表示,套接字句柄和文件句柄都是int,因为socket是用于进程间网络通信的特殊文件类型,本质为内核借助缓冲区形成的伪文件,即我们可以把它当作一个文件来用

因为Linux的设计是“一切皆文件”,为了统一接口,方便编程,比如管道,进程,线程,设备驱动都定义为文件

读写套接字和读写文件一致,如调用read和write方法

区别是:文件主要用于本地持久化数据的读写;套接字用于网络进程间数据的传递

在TCP/IP协议中,IP地址+端口号来唯一标识网络通信中的一个进程,“IP地址+端口号”就对应一个socket,要建立连接,两个进程各自都会有两个socket来标识,两个socket组成的socket pair就唯一标识一个连接

在网络通信中,套接字一定是成对出现的,一端的发送缓冲区对应对端的接收缓冲区,我们使用同一个文件描述符来操作发送缓冲区和接收缓冲区

2.socket通信创建流程图

参考上篇博客的回声服务器端与客户端的实现

此处读写可以同时进行,为全双工通信

同时读写可以采用同步和异步两种方式实现

同步:同步+多线程实现同时读写

异步:一个进程或线程就可以实现同时读写

未完,每天更新一部分

猜你喜欢

转载自blog.csdn.net/qq_34805255/article/details/86404114
今日推荐