V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xoxo419
V2EX  ›  程序员

Python -socket 如何给某个已连接的客户端发消息?

  •  
  •   xoxo419 · 2017-10-23 20:15:48 +08:00 · 5326 次点击
    这是一个创建于 2622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    硬件设备与服务端保持连接, 当用户操作 APP 发送消息给服务器. 服务器是怎么找到指定的连接给发给设备的?

    8 条回复    2017-10-24 15:47:46 +08:00
    janxin
        1
    janxin  
       2017-10-23 20:20:10 +08:00
    往指定连接发消息即可。至于指定连接怎么存的,就看你的结构了,一般都要有个 SessionManager 之类的东西
    NoAnyLove
        2
    NoAnyLove  
       2017-10-24 03:27:02 +08:00
    addr:port 就是识别连接的方式。建议看一下基础的网络编程书籍。
    lieh222
        3
    lieh222  
       2017-10-24 09:40:14 +08:00
    字典,连接标识作为 KEY,connection 对象作为 value,要操作某个连接的时候通过 key 把 connection 取出来就行了
    xoxo419
        4
    xoxo419  
    OP
       2017-10-24 10:41:24 +08:00
    @lieh222 #3 如果掉线了呢, 是不是不用自己做字典来存的, 而是内存里就有这样连接对象.
    julyclyde
        5
    julyclyde  
       2017-10-24 11:53:46 +08:00
    @xoxo419 你总得用一个什么东西存起来。如果没有任何引用,python 会 gc 掉这个对象的
    fyyz
        6
    fyyz  
       2017-10-24 14:05:55 +08:00
    一个 TCP 连接由四个值决定,分别是客户端 IP,客户端端口,服务端 IP,服务端端口。

    客户端 IP,服务端 IP 都是在 IP 包里的字段。
    客户端端口,服务端端口都是 TCP 报文里的字段。

    当收到一个 TCP 数据包后,TCP 的会从 TCP 协议栈里找这个客户端 IP,客户端端口,服务端 IP,服务端端口。找到以后就继续通信,没有就拒绝,除非你是 SYN 包,那我就跟你建立起连接。
    hcnhcn012
        7
    hcnhcn012  
       2017-10-24 14:34:27 +08:00 via iPhone
    连接池?
    oncew
        8
    oncew  
       2017-10-24 15:47:46 +08:00
    一个 tcp 连接中 是一个 5 元组( tcp,sip,sport,dip,dport )依据这个 5 元祖就可以 唯一确定服务端与客户端对应的连接
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.