Python线程错误

标签 python sockets tcp

我正在开发一个 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/

相关文章:

python - "Least Astonishment"和可变默认参数

c - FreeBSD 或 NetBSD 的 C 套接字编程最快的 I/O 策略或方法是什么?

python - 使用 ssh 从远程主机访问 localhost API

node.js - 在 socket.io 中,client.id 什么时候改变?

python - 定义适用于多个数据帧的运算符

python - 属性错误 : 'TimedeltaProperties' object has no attribute 'years' in Pandas

android - android 和 vb.net 之间通过套接字进行通信

javascript - 在 socket.io 上发送许多小数据包或一个大数据包是否存在相关差异?

c - 在 Linux 上用 C 处理多线程 TCP 服务器的最佳方法

python - 如何使用 openCV-python 识别白色背景上的多张照片?