Python 3.9 套接字问题向客户端套接字发送数据

时间:2021-04-20 07:53:34

标签: python sockets

我一直在使用 socket 和 tkinter 在 python 中创建一个聊天室应用程序。每当我尝试向服务器发送消息时,我都会收到以下错误:

<块引用>

发送或接收数据的请求被禁止,因为套接字未连接并且(使用 sendto 调用在数据报套接字上发送时)未提供地址

我不确定是什么导致了这个问题。

代码:

print("Sending message from server")

for clientKey in data.sockets.keys():
    data.sockets[clientKey]["socket"].send(bytes(f"{data.sockets['server']['username']}: {message}", "utf-8"))

log(f"{data.sockets['server']['username']}: {message}")
print("Sent message from server")

程序到达第一个打印语句。

对于上下文,我有一个 tkinter 文本小部件,函数 log(text) 只是将文本插入小部件中。它与套接字模块无关。对于更多上下文,这就是 data 类中客户信息的样子:

data.sockets["server"] = {"socket": sock,
    "username": "Host",
    "thread": threading.Thread(target = receiveMessages, daemon = True)}
data.sockets["server"]["thread"].start()

这是服务器的信息,但对于客户端来说是相同的布局。

1 个答案:

答案 0 :(得分:0)

问题是我从未创建过 if clientKey != "server",这意味着每次我尝试从服务器发送消息时,它都会尝试向服务器发送消息,这显然是不可能的。

>