-1

使用tkinter,当我尝试打开客户端时出现错误:

NameError:未定义全局名称“客户端”

 Traceback(most recent call lost):
File "C:\Users\Gerardi\Desktop\graf2.py", line 21, in <module>
cliente2 = conectar()
File "C:\Users\Gerardi\Desktop\graf2.py", line 18, in conectar
cliente.connect(address)
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
ocket.error: [Errno 10049] La direcci¾n solicitada no es vßlida en este context

def conectar():
    cliente = socket.socket(2,1)
    ip = cuadro_texto3.get("1.0", "1.end")
    address = (ip, 5001)
    cliente.connect(address)
    return cliente

cliente2 = conectar() 

def check_message(cliente):
while True:
    try:
        datos = cliente.recv(1000)
        cuadro_texto2.insert("1.0", datos)
    except socket.error:
        break
    if datos == "quit":
        cliente.close()
        server.close()      
cliente.close()
4

1 回答 1

1

无论如何,您都不应该使用全局。使用返回值和参数。

def conectar():
    [... your code ...]
    return cliente

def check_message(cliente):
    [... your code ...]

client = conectar()
check_message(client)

此外,在名为 *check_message* 的函数中关闭连接可能不是一个好主意。你应该有一个自己的功能。

从长远来看,重构一个类中的整个代码可能是一个好主意。

于 2013-07-26T06:52:38.713 回答