本地套接字
(1)作用
- 用于本地不同进程间通信
(2)流程
- 创建套接字对象
from socket import *
sockfd=socket(AF_UNIX,SOCK_STREAM)
- 建立套接字文件
sockfd.bind(path)绑定一个文件
- 监听
sockfd.listen(5)
- 等待连接请求
c, addr = sockfd.accept()
- 收发消息
c.recv(1024)
c.send(b"Receive your message")
(3)代码示例
# unix_recv.py
from socket import *
import os
# 确定使用哪个套接字文件
sock_file = "./sock_file"
# 如果存在同名文件则删除并重新创建
if os.path.exists(sock_file):
os.unlink(sock_file)
os.mknod(sock_file)
# 创建本地套接字
sockfd = socket(AF_UNIX, SOCK_STREAM)
# 绑定套接字文件:如果文件不存在,则绑定的同时创建此文件
sockfd.bind(sock_file)
# 监听
sockfd.listen(5)
# 消息收发
while True:
c, addr = sockfd.accept()
while True:
data = c.recv(1024)
if data:
print(data.decode())
c.send(b"Receive your message")
else:
break
c.close()
sockfd.close()
# unix_send.py
from socket import *
# 确保和另一端使用相同的套接字文件
sock_file = "./sock_file"
# 创建本地套接字
sockfd = socket(AF_UNIX, SOCK_STREAM)
# 链接另外一端
sockfd.connect(sock_file)
# 收发消息
while True:
msg = input(">>")
if msg:
sockfd.send(msg.encode())
print(sockfd.recv(1024).decode())
else:
break
sockfd.close()