Socket网络编程之本地传输UNIX

版权声明:FatPuffer https://blog.csdn.net/qq_42517220/article/details/88975121

本地套接字

(1)作用

  • 用于本地不同进程间通信

(2)流程

  1. 创建套接字对象
from socket import *

sockfd=socket(AF_UNIX,SOCK_STREAM)
  1. 建立套接字文件
sockfd.bind(path)绑定一个文件
  1. 监听
sockfd.listen(5)
  1. 等待连接请求
c, addr = sockfd.accept()
  1. 收发消息
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()

猜你喜欢

转载自blog.csdn.net/qq_42517220/article/details/88975121