1

我正在开发一个 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 和套接字编程很陌生,所以我可能在线程代码方面犯了一些错误。有人可以帮我解决这个问题吗?提前致谢!

4

1 回答 1

1

serverThread.join()您在开始第二个线程之前立即调用。

问题是连接阻塞,直到线程终止

我会移动或完全删除对join.

于 2013-03-15T18:02:54.817 回答