给特定用户的消息 Socket Python

Posted

技术标签:

【中文标题】给特定用户的消息 Socket Python【英文标题】:Message to a specific user Socket Python 【发布时间】:2022-01-02 04:32:18 【问题描述】:

如何向套接字中的特定用户发送消息?如果我简单地将一个对象及其地址绑定到一个具有其名称的指针,我就可以向特定用户发送消息。

我正在套接字上制作一个简单的信使,我想向特定用户发送消息。

示例:

users = "user": <socket.socket fd=288, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.0.3', 9090), raddr=('178.70.167.46', 55663)>

问题是,如果我重新启动脚本(服务器),那么整个字典都会清零。

    我可以在哪里保存这样的对象以便重新启动它?我可以从 JSON 中获取它吗?

    我可以手动输入/创建数据以发送给特定的客户吗?

【问题讨论】:

您无法保存套接字。当您的服务器程序停止运行时,操作系统会断开所有套接字。 【参考方案1】:

1.您可以保存一个包含收件人地址的 json 文件,然后当它打开时,连接到他们。

2. 是的,你可以。但是,它不能作为列表或字典发送,您必须将其作为字符串或其他东西发送

【讨论】:

如果是这样,我该怎么做?只是我还不是一个经验丰富的程序员(正如你已经理解的那样)。我已经这样做了,但是只有将其转换为字符串时,它才能存储类套接字对象。但它不适用于字符串 @NIKITA76 在我的帖子中我说过你应该只存储收件人的地址。这样您就可以稍后开始新的连接。【参考方案2】:

你永远无法保存套接字。套接字是两个程序之间的连接。您不能单独保存连接的一端,这没有任何意义。当您的服务器程序终止时,整个连接都会消失,因为其他程序不再连接到任何东西。

也许你可以在重启程序后保存地址并建立新的连接。


您没有“套接字中的特定用户”。最有可能的是,每个用户都有一个套接字。如果要向用户发送数据,则使用该用户的套接字发送数据。 Users["user"].send(b"hello world") 或其他。

【讨论】:

如果保存地址,保存在哪里,如何保存? @NIKITA76 由你决定...大概在一个文件中 您可以将此类对象保存到文件中,在示例中?如果有,怎么做? @NIKITA76 NO. 套接字不能保存在文件中。这不可能。 IP地址可以,因为你可以把它们写下来,比如“123.45.67.89”。也许这对你有用。

以上是关于给特定用户的消息 Socket Python的主要内容,如果未能解决你的问题,请参考以下文章

如何在socket.io中向特定用户发送消息?

如何使用nodejs socket.io向特定房间中的用户发送打字警报和消息

如何使用消息队列处理特定的客户端/用户?

php socket同时给不同用用户发消息怎么做

传递给 Java Socket 程序的参数

使用 socket.io 向特定客户端发送消息,同时套接字 id 快速变化