我有一个问题,我尝试让客户端循环,直到它从服务器接收连接。当我尝试将套接字作为全局变量。然后使用start建立连接,它连接。但是当我使用带有效数据变量的send时,我收到此错误:Socket未连接。这只有在我将所有代码放入启动并且它将发送信息时才有效。如果我在客户端之前启动服务器,这将编码工作,但不是相反。试图让它适用于任何场景。
#global variable definition
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def start(host, port):
connected = False
while not connected:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
connected = True
print("Connected")
except:
print("connecting again!")
sleep(5)
#i do put a valid json to send!
def send():
try:
s.sendall(json.dumps(data).encode('utf-8'))
答案 0 :(得分:0)
您不应该依赖全局变量。返回已连接的套接字并在send
:
def start(host, port):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
print("Connected")
return s
except IOError:
print("connecting again!")
sleep(5)
#i do put a valid json to send!
def send(s, data):
s.sendall(json.dumps(data).encode('utf-8'))
s = start(HOST, PORT)
send(s, data)