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

2017-10-23 20:15:48 +08:00
 xoxo419

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

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

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

当收到一个 TCP 数据包后,TCP 的会从 TCP 协议栈里找这个客户端 IP,客户端端口,服务端 IP,服务端端口。找到以后就继续通信,没有就拒绝,除非你是 SYN 包,那我就跟你建立起连接。
hcnhcn012
2017-10-24 14:34:27 +08:00
连接池?
oncew
2017-10-24 15:47:46 +08:00
一个 tcp 连接中 是一个 5 元组( tcp,sip,sport,dip,dport )依据这个 5 元祖就可以 唯一确定服务端与客户端对应的连接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX