<p>感谢评论中的@Alex F,我成功地解决了这个问题。看来我在错误的地方执行了循环。您不想循环self.socket.accept(),但一旦接受套接字,conn.recv()部分就会被循环。简单地将while循环移动到self.socket.accept()下面对我来说很有效</p>
<pre><code>#Starts listening at the defined port on a separate thread. Terminates when 'stop' is received.
def start(self):
try:
if not self.is_running:
self.is_running = True
self.socket.listen(1)
#< moved from here
conn, addr = self.socket.accept()
while self.is_running: #< to here
#Messages are split with $ symbol to indicate end of command in the stream.
jStrs = [jStr for jStr in conn.recv(self.buffer_size).decode().split('$') if jStr != '']
#Loads the arguments and passes them to the remotes dictionary
#which holds all the methods
for jStr in jStrs:
jObj = json.loads(jStr)
func_name = jObj["name"]
del jObj["name"]
remote.all[func_name](**jObj)
except Exception as ex:
raise SystemExit(f"Server raised error: {ex}")
</code></pre>