能否实现Unix域套接字无读取端持续发数据及先产后消传输?
用Unix套接字实现先发送后接收?改用UDP方案实现直播流推送
需要用Unix套接字连接两个进程:推送直播视频流的生产者,以及读取处理视频流的消费者。原本设想让生产者持续向套接字写入数据,等消费者就绪后再开始读取,但使用AF_UNIX套接字时,无法在接收套接字创建前启动发送端,请问该功能是否可以实现?
这种先发送后接收的非阻塞发送行为无法通过AF_UNIX套接字实现,但可以通过AF_INET套接字的UDP通信达成:生产者可立即持续发送数据,消费者按需启动后再接收。
生产者代码(sender.py)
import socket import time sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = ('localhost', 10000) try: # 持续发送数据 i = 0 while True: msg = f"message: {i}" sent = sock.sendto(bytes(msg, encoding="ascii"), server_address) print(f"已发送 {sent} 字节 - {msg}") i += 1 time.sleep(0.05) finally: print('关闭套接字') sock.close()
消费者代码(receiver.py)
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = ('localhost', 10000) sock.bind(server_address) try: while True: data, address = sock.recvfrom(4 * 1024) print(f"已接收 {data}") except KeyboardInterrupt: pass finally: sock.close()
内容的提问来源于stack exchange,提问作者IvanProsperi94
相关产品推荐
相关产品推荐

