我试图做一个程序,模拟一个完全连接的网络
我计划创建线程来表示网络中的节点,每个节点都必须相互发送和接收消息
我指定总共有9个节点
对于每个节点,我都有一个函数run(),它将指定每个节点(线程)的任务
def establish_c(input_id, maxS, local_conns, curr_port):
incr = 0
while (incr < id):
tmpS = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
curr_port += 1
tmpS.bind((ip, curr_port))
tmpS.connect((ip, basePort + incr*100 + 1))
local_conns.append(tmpS)
incr += 1
while (incr < maxS - 1):
conn, addr = local_l.accept()
local_conns.append(conn)
incr += 1
return
def run(*input):
.... // Other code here, and also set up the input values for establish_c
if True:
establish_c(id, maxS, local_conns, curr_port)
上述代码不起作用,将显示一个错误:
error: [Errno 111] Connection refused
但是,如果将建立_c()中的代码附加到run()中的代码上,则每个连接都可以正常工作
def run(*input):
incr = 0
while (incr < id):
tmpS = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
curr_port += 1
tmpS.bind((ip, curr_port))
tmpS.connect((ip, basePort + incr*100 + 1))
local_conns.append(tmpS)
incr += 1
while (incr < maxS - 1):
conn, addr = local_l.accept()
local_conns.append(conn)
incr += 1
我不明白为什么会这样
目前没有回答
相关问题 更多 >
编程相关推荐