python:NameError:未定义全局名称'conn'插座

时间:2018-07-14 19:01:50

标签: python sockets

我有一个与通用服务器一起运行的基本套接字服务器连接:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((hostHost, hostPort))
s.listen(10)
conn, addr = s.accept()

但是只要我尝试拨打

print(conn.send("Hello World"))

它返回错误:

NameError: global name 'conn' is not defined

我不明白为什么会这样,有人可以解释一下吗? (我是在Tkinter窗口中执行此操作的,但是我删除了该代码以简化此操作。)

注意:我已经导入了所有正确的库,并且如果将其更改为s.send,也会发生相同的错误。我在另一个函数中调用了send():

def send_Button():
        myMsg = "ME: " + text.get()
        msg = text.get()
        conn.send(msg)
        textBox.insert(END, myMsg + "\n")
        textEntry.delete(0, END)
        textBox.yview_pickplace("end")

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该查看错误消息中给出的行号。每当您离开函数时,就使用变量goes out of scope。您的代码似乎遗漏了有关conn的定义和引用位置的详细信息,但这是一个简短的示例,该错误将给出相同的错误,并希望为您在程序中的位置提供一些指导。

def make_var():
    some_var = 1      # initialize a variable some_var

def print_var():
    print some_var    # Print a variable called some_var

make_var()
print_var()     # some_var has already gone out of scope, the program crashes

# now let's define some_var in the global scope
some_var = "yay, this works!"
print_var()      # this print's "yay, this works"