2 kyle656 kyle656 于 2015.05.30 22:11 提问

客户端和单台服务器多个程序建立多个连接如何保存并关联到一个用户?

学了一段时间tcp通信,用C#做了简单的聊天,一直用dictionary存储的连接类(包含存储userid,socket等信息),userid为key

多个程序提供不同的服务,后续更新:全部放Redis了

4个回答

caozhy
caozhy   Ds   Rxr 2015.05.30 22:25

tcp分为长连接和短连接。短连接不用保持端口的。
另外qq主要使用p2p方式通讯,消息不经过服务器中转的。

kyle656
kyle656 回复kyle656: 就是建立不起来p2p连接 就走服务器中转
2 年多之前 回复
kyle656
kyle656 哦 p2p的话 就是建立不起来p2p中转的吧 ?2 还有那么漫游聊天记录功能也是从客户端把聊天记录同步过去了?
2 年多之前 回复
edouardzyc
edouardzyc   2015.05.30 22:34

不是很明白你的问题, 建立多个连接? 你的意思是userid是相同的,一个key不能对应多个value? 你dictionary是个list不可以吗?
后面又说道多个服务器程序又是什么意思?

edouardzyc
edouardzyc 回复kyle656: qq里面的机制肯定很复杂的,肯定要分很多层的,比如一种:每个服务器的dictionary的key肯定是一样的,value可以是空,当取值的时候发现value为空再从2级缓存里面取
2 年多之前 回复
kyle656
kyle656 对啊 这种 dictionary的value是个list我也考虑到了 我想qq服务器并不是一个 我考虑只要一个服务器上保存这个dictionary保存在线状态 就行了 其他的服务器用list
2 年多之前 回复
kyle656
kyle656 因为消息转发要找接受者的那个连接类实例 才能发过去呢
2 年多之前 回复
edouardzyc
edouardzyc 打字漏了,dictionary的value是个list
2 年多之前 回复
lzp_lrp
lzp_lrp   Ds   Rxr 2015.05.30 22:40

一台服务器多个服务器程序,监听端口不同,我觉得应该不是
答:服务器可以监听某个端口,可以响应多个客户端的连接,包括同一个IP的多个连接

smile19910121
smile19910121   2015.05.31 09:06

一台服务器多个服务器程序,监听端口不同,我觉得应该不是
答:一个服务器程序只能监听一个不同的端口,也就是说同一个端口是不能被多个服务器程序监听的

Csdn user default icon
上传中...
上传图片
插入图片