Python线程错误

Python线程错误,python,sockets,tcp,Python,Sockets,Tcp,我正在开发一个Python应用程序来使用TCP传输文件,并且是Python语言的新手。我已经编写了客户端代码和服务器端代码,如果我单独运行它们,就可以了。不幸的是,我需要将它们放在同一个文件中,即main.py,该文件将运行服务器端代码和客户端代码。例如,每个网络节点都应该同时充当服务器和客户端。因此,我需要它不断地侦听来自其他节点的新请求(因此需要运行服务器端代码),同时向充当服务器的其他节点发送新请求(因此在本例中,它充当客户端)。我曾想过使用线程,但一直停留在服务器端代码的线程上 下面是一

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

在启动第二个线程之前,立即调用
serverThread.join()

问题是


我将移动或完全删除对
join
的调用。在启动第二个线程之前,您将立即调用
serverThread.join()

问题是


我要移动或完全删除对
join

的调用,我需要线程一直运行。在这种情况下,我应该将其移动到clientThread_stop.set()的顶部吗?听起来这里使用
join
是不合适的,那么->
join
用于等待线程完成作业(或者如果提供,则超时,以先发生的为准)。在这种情况下,我应该使用什么?我的serverThread在函数中有一个无限循环,而我的clientThread在函数中没有无限循环。我认为在不了解更多关于您的系统及其预期用途的情况下,不可能回答这个问题。我打算使用一个始终开启的服务器线程,以便其他客户端可以与其通信。我需要另一个客户端线程可用,以便它可以向其他服务器线程发送请求。在这种情况下,除了join,我应该使用什么呢?我需要线程一直运行。在这种情况下,我应该将其移动到clientThread_stop.set()的顶部吗?听起来这里使用
join
是不合适的,那么->
join
用于等待线程完成作业(或者如果提供,则超时,以先发生的为准)。在这种情况下,我应该使用什么?我的serverThread在函数中有一个无限循环,而我的clientThread在函数中没有无限循环。我认为在不了解更多关于您的系统及其预期用途的情况下,不可能回答这个问题。我打算使用一个始终开启的服务器线程,以便其他客户端可以与其通信。我需要另一个客户端线程可用,以便它可以向其他服务器线程发送请求。在这种情况下,除了join,我还应该使用什么?它进入了TCPServer函数中的无限循环…它进入了TCPServer函数中的无限循环。。。