一、知识准备
1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)
2、操作这些不同的类型就像操作文件一样,比如增删改查等
二、环境准备
组件
版本
OS
CentOS Linux release 7.5.1804
三、Unix domain socket 文件描述符
● 主要用于:运行在同一台机器上的2个进程相互之间的数据通信
● 它们和网络文件描述符非常相似(比如:TCP socket),但是比网络协议更底层,他们的通信发生在操作系统内核
先准备2个脚本:
server.py主要用于建立客户端的连接请求,并且接收客户端传来的数据,然后将收到的数据回传给客户端
client.py每隔1秒向服务端发送一次'hello world'
server.py:
import socket
server_addr = '/tmp/server.sock'
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind(server_addr)
sock.listen(0)
while True:
conn, clientAddr = sock.accept()
while True:
data = conn.recv(100)
conn.sendall(data)
client.py:
import socket
import time
server_addr = '/tmp/server.sock'
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(server_addr)
while True:
message = 'hello world!'
sock.sendall(message)
sock.recv(100)
time.sleep(1)
sock.close()
先看下server.py的状态:
[root@localhost ~]# python /tmp/server.py &
[1] 2554
[root@localhost ~]# ls -