创建一个套接字时未定义

纳迪

我有一个仅通过tkinter接口将消息发送到服务器的程序。我正在使用各种子程序来运行诸如开始新连接和发送消息之类的基本操作。唯一的问题是,当用户必须通过另一个子程序来建立连接时,它会不断出现名称错误“未定义clientsocket”

我尝试过移动子程序,使clientsocket成为全局变量,并且我再次检查了我的名字是否正确。我从功能优良的程序(在我之前创建的控制台中运行的聊天程序)中获得了这些子程序的代码,所以它一定是我构造程序的方式。

这是处理套接字的所有子程序

def send_msg(): # Sends a message to the server (called from tkinter button)
        try:
            Csend = field.get("1.0", "end-1c")
            Csend = str(Csend)
            clientsocket.send(Csend.encode())

            field.delete()
            field.insert(END, "")
        except error as err:
            Csend = field.get("1.0", "end-1c") # 1.0 - Line one, char zero
            print(f"Can't send message \"{Csend}\": Not connected to a server")
            print(err)

    def new_connection():
        # Tkinter code goes here
        def connect_server(): # Tries to connect to the server
            try: # This runs the first check, if there is an existing connection
                clientsocket.close()
            except:
                print("No existing connection")

            try: # Runs the second check, if it can connect using the info
                clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

                host = host_ent.get() # Gets STR of host IP
                port = port_ent.get() # Gets STR of port
                port = int(port) # Converts port to INT

                clientsocket.connect((host, port)) # Connects to the server
            except:
                print("Could not connect, incorrect inputs?")

    def disconnect_server():
        try:
            clientsocket.close()
        except:
            print("No existing connection")

所有这些子程序都可以从tkinter菜单栏或按钮中调用。

我对套接字很陌生,因此,如果任何代码是初学者级的,那么对不起。

预先感谢您的帮助!

recursive_tree

问题是,您未定义全局套接字,而仅在函数中定义了本地套接字。您应该global clientsocket在使用clientsocket的每个函数的标题下添加

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AsyncTask创建一个套接字

来自分类Dev

创建一个套接字C ++

来自分类Dev

套接字io get未定义

来自分类Dev

套接字属性未定义

来自分类Dev

连接中未定义的套接字

来自分类Dev

Uncaught ReferenceError:尝试在Chrome中的另一个Worker中创建Worker时未定义Worker

来自分类Dev

将一个.so与另一个链接时未定义的符号

来自分类Dev

无限,NaN和未定义:一个未保留的关键字?

来自分类Dev

React JS,尝试从数组中获取第一个值时未定义错误未定义

来自分类Dev

如何创建一个公共的Unix域套接字?

来自分类Dev

重复使用套接字还是每次都创建一个新套接字?

来自分类Dev

尝试创建和使用一个类;未定义名称“ is_empty”

来自分类Dev

未定义不是构造函数试图在另一个内部创建一个类的新实例

来自分类Dev

从另一个类调用函数时属性未定义

来自分类常见问题

传递给另一个.js文件中的函数时,属性未定义

来自分类Dev

导入使用另一个cython模块的cython模块时的未定义符号

来自分类Dev

使用物化CSS时,下一个js中的窗口未定义

来自分类Dev

当我的函数调用另一个函数时,未定义“ sqlContext”

来自分类Dev

从另一个类调用函数时属性未定义

来自分类Dev

javascript数组在转义一个索引时显示未定义

来自分类Dev

当从另一个上下文中调用方法时,“ this”是未定义的

来自分类Dev

当需要另一个文件的模式时,Mongoose Populate返回未定义的

来自分类Dev

访问另一个插件中的类时出错(错误:未定义的引用)

来自分类Dev

遍历数组时,第一个值始终为“未定义”

来自分类Dev

从另一个对象调用一个对象的功能时的未定义引用

来自分类Dev

在 JavaScript 中通过另一个对象引用一个对象时未定义

来自分类Dev

套接字编程C ++错误未定义参考

来自分类Dev

接受连接时创建多个套接字,但数据被视为由第一个连接的客户端发送

来自分类Dev

jQuery最后一个孩子的未定义问题

Related 相关文章

  1. 1

    AsyncTask创建一个套接字

  2. 2

    创建一个套接字C ++

  3. 3

    套接字io get未定义

  4. 4

    套接字属性未定义

  5. 5

    连接中未定义的套接字

  6. 6

    Uncaught ReferenceError:尝试在Chrome中的另一个Worker中创建Worker时未定义Worker

  7. 7

    将一个.so与另一个链接时未定义的符号

  8. 8

    无限,NaN和未定义:一个未保留的关键字?

  9. 9

    React JS,尝试从数组中获取第一个值时未定义错误未定义

  10. 10

    如何创建一个公共的Unix域套接字?

  11. 11

    重复使用套接字还是每次都创建一个新套接字?

  12. 12

    尝试创建和使用一个类;未定义名称“ is_empty”

  13. 13

    未定义不是构造函数试图在另一个内部创建一个类的新实例

  14. 14

    从另一个类调用函数时属性未定义

  15. 15

    传递给另一个.js文件中的函数时,属性未定义

  16. 16

    导入使用另一个cython模块的cython模块时的未定义符号

  17. 17

    使用物化CSS时,下一个js中的窗口未定义

  18. 18

    当我的函数调用另一个函数时,未定义“ sqlContext”

  19. 19

    从另一个类调用函数时属性未定义

  20. 20

    javascript数组在转义一个索引时显示未定义

  21. 21

    当从另一个上下文中调用方法时,“ this”是未定义的

  22. 22

    当需要另一个文件的模式时,Mongoose Populate返回未定义的

  23. 23

    访问另一个插件中的类时出错(错误:未定义的引用)

  24. 24

    遍历数组时,第一个值始终为“未定义”

  25. 25

    从另一个对象调用一个对象的功能时的未定义引用

  26. 26

    在 JavaScript 中通过另一个对象引用一个对象时未定义

  27. 27

    套接字编程C ++错误未定义参考

  28. 28

    接受连接时创建多个套接字,但数据被视为由第一个连接的客户端发送

  29. 29

    jQuery最后一个孩子的未定义问题

热门标签

归档