关于网友提出的“ 一个简单的socket问题”问题疑问,本网通过在网上对“ 一个简单的socket问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 一个简单的socket问题描述:
假设有一个服务器,然后有两个客户端a,b,他们都用tcp和服务器连接上。问题:如果a想通过服务器给b发消息是怎么做到的?服务器怎么知道是发送给b的,服务器上会有很多socket连接,它是如何找到b与服务器的socket连接来发送的?
解决方案1:
每当一个客户连接后,要用结构数组等方法保存它的pSocket和他的身份标识,当有客户端发送消息后,从中取出要接收的客户标识, 用此标识同结构数组中的身份标识相比较,如果一致就对此结构中的pSocket发送
解决方案2: 消息结构里面你可以定义 from,to,content
然后服务器进行中转
服务器怎么知道是发送给b的?
可以做成消息头+消息的结构,消息头保存目标的信息,然后服务器根据消息头转发给目标
映射啊。
server机器上
a -> socket 0
b -> socket 1
c -> socket 2
... ...
z -> socket n
比如a发送消息给b
当server收到a发送的数据的时候,必然要有a和b的唯一ID存在,我们不妨认为就是"a"和"b".
然后我们可以从外面的mapping中找点server和b之间的那个socket.把消息通过该socket,send就可以了。