Linux基础入门--进程间通信--socket

1.本地进程间通信

socketpair可以实现本机进程间通信的机制,类似于无名管道(pipe),但其可以实现双向通信,且通信方式属于socket网络通信范畴,其函数声明如下:
extern int socketpair(int domain,int type,int protocol,int fds[2])
第1个参数domain用来指明此socket对象所使用的地址簇或协议簇,AF_UNIX实现本机数据流传输
第2个参数type用来指定数据流方式TCP/UDP
第3个参数protocol用来指定协议IPv4或IPv6
第4个参数指定一个本地数组成员(类似于创建管道总的pipe函数的参数)

2.实现两端互相发送/接受数据

服务器端:
(1)调用socket函数,建立socket对象,指定通信协议为AF_UNIX
(2)调用bind函数,将创建的socket对象与socket类型(包括服务器地址)的文件绑定
(3)调用listen函数,是socket对象处于监听状态,并设置监听队列大小
(4)等待客户端发出请求后,服务器端监听到该请求,accept函数接受请求,返回新文件描述符,从而建立连接
(5)服务器调用read函数接受数据(处于阻塞状态,等待客户端发送数据),接收到数据后,输出接受到的数据
(6)调用write函数发送数据到客户端
(7)通信完成后,调用close函数关闭socket对象
服务器代码

客户端:
(1)调用socket函数,建立socket对象,指定相同的通信协议
(2)调用connect函数,向服务器发起连接请求
(3)得到服务端允许后,首先调用write函数向服务器端发送消息
(4)调用read函数接受数据
(5)通信完成后,调用close函数关闭socket对象
客户端代码

3.通信流程图

通信流程图
TCP三次握手
温馨提示:
以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_20677327/article/details/104328994