我有一个与通用服务器一起运行的基本套接字服务器连接:
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")
谢谢。
答案 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"