首页 新闻 搜索 专区 学院

socket 服务器给指定的客户端发消息该怎么处理

0
悬赏园豆:30 [已解决问题] 解决于 2012-05-11 14:47

多个客户端之间进行通讯,通过服务器转发的形式,
  现在客户端1请求向客户端2发送消息, 先把消息发送到服务器, 服务器怎么才能把消息转发到客户端2而不是转发给客 户端3或者其他人。(TCP协议下)send()函数好像不能指定发送目的地的信息。
  请高手指教下该如何处理!

Hevi的主页 Hevi | 初学一级 | 园豆:118
提问于:2012-05-10 23:44
< >
分享
最佳答案
1

你在服務器端,保存一個用戶的列表,用戶列表的信息,包含改用戶的Socket對象。定義發送規則。在服務器端解開數據,

根據發送的地址,對應查找用戶列表,如果找到,然後對應Socket 發送數據。

收获园豆:20
無限遐想 | 老鸟四级 |园豆:3740 | 2012-05-11 09:26

这种做法是不是只有在客户端连接到服务器才可以,如果没有连接到服务器,在用户列表就找不到对应的socket,这样就不可以发送了,是不是这样?如果我想在客户端没有连接到服务器的情况下发送信息给该客户端(这个时候可能在服务器端保存这个信息吧,但是怎么保存这个信息呢?是保存在数据库还是在内存中?),然后当该客户端连接上服务器后就把这个信息发给他.有没有这种做法,应该怎么做?

Hevi | 园豆:118 (初学一级) | 2012-05-11 09:39

@叶海咏: 是的。

那你只能在本地保存發送的信息。如果連接上 服務器,然後再把以前的信息發送給服務器。然後刪除信息

無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-11 09:49
其他回答(1)
0

首先要确认的是客户端必须先与服务器建立连接,这时候,服务端应该就保有了与C1和C2进行通讯的两个socket了,当收到C1要转发给C2的消息的时候,使用与C2连接的socket发送消息即可。

收获园豆:10
sinhbv | 园豆:2579 (老鸟四级) | 2012-05-11 07:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册