我正在开发一个使用TCP传输文件的Python应用程序,它是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和套接字编程很陌生,所以我可能在使用线程代码时犯了一些错误。有人可以帮我解决这个问题吗?提前谢谢!
答案 0 :(得分:1)
在开始第二个主题之前,您立即调用serverThread.join()
。
问题在于join blocks until the thread terminates。
我要移动或完全删除对join
的调用。