Python客户端套接字错误

时间:2018-03-29 08:53:26

标签: python sockets

我有一个问题,我尝试让客户端循环,直到它从服务器接收连接。当我尝试将套接字作为全局变量。然后使用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'))

1 个答案:

答案 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)