python - ConnectionAbortedError: [Errno 53] 软件导致连接中止
问题描述
我正在尝试使用多线程为多个套接字建立连接
这是代码
import socket as sc
if __name__ == '__main__':
#setup()
ports = [10000, 10010, 10020, 10030]
init_sockets()
init_threads()
def init_sockets():
global host_ip
global sockets
host_ip = sc.gethostname()
sockets = []
for port in ports:
socket = sc.socket()
socket.bind((host_ip, port))
socket.listen()
sockets.append(socket)
def init_threads():
threads = [
threading.Thread(target= init_connection, args= [socket])
for socket in sockets
]
for thread in threads:
thread.start()
def init_connection(socket):
client, address = socket.accept()
运行代码时出现此错误
ConnectionAbortedError: [Errno 53] Software caused connection abort
错误发生thread.start()
在函数中的语句中init_threads()
我不知道为什么会这样,非常感谢任何帮助。我正在尝试并行运行多个套接字连接,如果这样不可能,我愿意接受建议
解决方案
解决了!
问题似乎是当主线程(程序它自己)终止时,它创建的所有对象都被删除,包括套接字对象。
因此,当辅助线程(主程序启动的线程)仍在运行时,尝试引用这些已删除的对象时会发生错误
我的解决方案似乎是while
在 main 方法中添加一个无限循环。防止主线程被终止
推荐阅读
- java - Javafx 将特定节点移动到 AnchorPane 的前面
- java - Java - HTTP 状态 404 - 未找到
- python - 无法使用机器人框架启动进程“Apium -p 4732”服务器
- java - 保存 Java GUI 的状态
- sql - 在 SQL 中使用 Intersect 和子查询时无法获得输出
- node.js - 获取 google.sqladmin 不是函数错误
- javascript - Firebase OTP 身份验证:令牌验证 API
- python - 在pytorch中用概率进行回归的最先进方法是什么
- android - 使用 Intent.ACTION_PICK 启动活动时,我的 Android 应用程序未显示
- python - R 中全局 (??) 帮助部分的 Python 等效项