给特定用户的消息 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的主要内容,如果未能解决你的问题,请参考以下文章