我正在开发一个 Python 应用程序来使用 TCP 传输文件,并且是 Python 语言的新手。我已经编码出客户端代码和服务器端代码,如果我单独运行它们,它就可以工作。不幸的是,我需要将它们放在同一个文件中,即。 main.py,它将运行服务器端代码和客户端代码。例如,每个网络节点都应该同时充当服务器和客户端。因此,我将需要它不断地监听来自其他节点的新请求(因此需要运行服务器端代码)并同时将新请求发送到充当服务器的其他节点(因此在这种情况下,它充当一个客户)。我曾考虑过使用线程,但一直卡在服务器端代码的线程中。
这是我处理线程的 main.py 代码示例。
if __name__ == '__main__':
serverThread_stop = Event()
serverThread = Thread(target = TCPServer, args = (1111,'test.txt'))
serverThread.start()
serverThread.join()
clientThread_stop = Event()
clientThread = Thread(target = TCPClient, args = ('127.0.0.1',1111,'test.txt'))
clientThread.start()
clientThread.join()
clientThread_stop.set()
serverThread_stop.set()
由于我对 Python 和套接字编程还很陌生,所以我可能在线程代码上犯了一些错误。有人可以帮我解决这个问题吗?提前致谢!
最佳答案
在启动第二个线程之前立即调用 serverThread.join()
。
问题是 join blocks until the thread terminates .
我会移动或完全删除对 join
的调用。
关于Python线程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438813/