<p>正如@green斗篷guy指出的,您可能希望使用管道,但是如果您打算使用Unix套接字,下面是一个使用StreamRequestHandler的粗略示例:</p>
<p>服务器:</p>
<pre><code>#!/usr/bin/env python3
from socketserver import UnixStreamServer, StreamRequestHandler, ThreadingMixIn
import os
os.unlink("/tmp/test")
class Handler(StreamRequestHandler):
def handle(self):
while True:
msg = self.rfile.readline().strip()
if msg:
print("Data Recieved from client is: {}".format(msg))
else:
return
class ThreadedUnixStreamServer(ThreadingMixIn, UnixStreamServer):
pass
with ThreadedUnixStreamServer('/tmp/test', Handler) as server:
server.serve_forever()
</code></pre>
<p>客户:</p>
<pre><code>#!/usr/bin/env python3
import socket
import sys
import time
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as client:
client.connect("/tmp/test")
while True:
client.send(b"Client 1: hi\n")
time.sleep(1)
client.close()
</code></pre>
<p>ThreadingMixIn不是必需的,但它允许您运行两个客户端,并同时从这两个客户端接收消息。将客户机代码复制到“client1.py”和“client2.py”中,并将client2.py中的“client1”更改为“client2”,同时运行这两个命令,以在实践中看到这一点。你知道吗</p>
<p>我不是专家,但听起来虽然管道效率更高,但它们的缺点是只有一个程序链接到另一个程序。如果您有多个客户机和一台服务器,那么Unix套接字(如本文所示)可能是您的最佳选择。你知道吗</p>