Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python套接字聊天服务器_Python_Sockets - Fatal编程技术网

python套接字聊天服务器

python套接字聊天服务器,python,sockets,Python,Sockets,在我从input连接到服务器之后,如何在聊天中更改服务器 我刚刚用一些可以工作的东西更新了代码,尽管它需要更多的工作,有人吗 def send(event=None): # event is passed by binders. """Handles sending of messages.""" global HOST global PORT global ADDR msg = my

在我从input连接到服务器之后,如何在聊天中更改服务器

我刚刚用一些可以工作的东西更新了代码,尽管它需要更多的工作,有人吗

def send(event=None):  # event is passed by binders.
    """Handles sending of messages."""
    global HOST
    global PORT
    global ADDR
    
    msg = my_msg.get()
    my_msg.set("")  # Clears input field.
    msg_list1 = msg.split()
    
    try:
        if msg_list1 [0] == "/connect":
        try: 
            HOST = msg_list1[1]
            PORT = int(msg_list1[2])
            ADDR = (HOST,PORT)
            client_socket.connect(ADDR)
            receive_thread = Thread(target=receive)
            receive_thread.start()
            
        except TypeError:
            msg_list_tk.insert(tt.END, "Error: please write '/connect ADDR PORT' to connect to server\n")
            
    if msg_list1 [0] == "/connectnew":
            HOST = msg_list1[1]
            PORT = int(msg_list1[2])
            ADDR = (HOST,PORT)
            client_socket_2.connect(ADDR)
            receive_thread = Thread(target=receive)
            receive_thread.start()
            except:
                msg_list_tk.insert(tt.END, "Error: please write '/connect ADDR PORT' to connect to server\n")
        elif msg == "/q":
            root.quit()
            client_socket.send(b"/q")
            
        elif msg == "/disconnect":
            client_socket.close()
            
        else:
            client_socket.send(bytes(msg, "utf8"))
    except:
        msg_list_tk.insert(tt.END, "Wrong input\n")

TCP套接字仅可用于单个TCP连接。如果您想要第二个连接,您需要创建一个新的套接字并调用该套接字上的
connect()
(即,您不能再次调用旧套接字上的
connect()

调用
client\u socket时会发生什么情况。使用新地址再次连接(或使用第二个客户端)?您的意思是,在当前程序中的第一个服务器之后,我尝试连接到服务器时会发生什么?注意:我们不了解您连接到的是什么。但是,关闭当前的客户端\u套接字,或者创建一个新的客户端,然后使用不同的服务器地址在其上调用
connect()
,这就是“如何更改服务器”的答案。现在,我基本上是连接到我自己的计算机,如果这符合您的兴趣(127.0.0.1 5005),代码中会是什么样子(您的建议)?嗯,您想停止
接收线程并完全断开连接,还是只打开多个服务器连接并获取消息?因此它基本上是一个新客户端?@sasasa这是一个新套接字。客户机是您在程序中创建的东西,与套接字无关,所以这是您自己的问题?我可能需要一些帮助:)刚刚更新