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

wsy6bxw 2010-08-12 07:54:22
多个客户端之间进行通讯,通过服务器转发的形式,
现在客户端1请求向客户端2发送消息, 先把消息发送到服务器, 服务器怎么才能把消息转发到客户端2而不是转发给客 户端3或者其他人。(TCP协议下)send()函数好像不能指定发送目的地的信息。
请高手指教下该如何处理!
...全文
2351 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghf12 2013-01-18
  • 打赏
  • 举报
回复
最近我也遇到了这样的问题!同求解惑
ouyangxian 2011-06-17
  • 打赏
  • 举报
回复
我也碰到同样的问题,哪位给点详细的案列咯
【天运子】 2010-08-13
  • 打赏
  • 举报
回复
套接字啊 每个客户端的套接字是不一样的 你都说了
int send(
SOCKET s,
const char FAR* buf,
int len,
int flags
);
就用s 只是你在接受的时候要用个容器保存好每个客户端的套接字,发送的时候对应的发生
wujiabao 2010-08-13
  • 打赏
  • 举报
回复
最好的方法是:每一客户端用唯一的ID来标示, 就像QQ号一样, 在客户端连接服务器,发送自己的ID, 然后和相应产生的SOCKET进行绑定, 一个客户端向另一个客户端发送信息时,要求在数据包里包含对方的ID号。可以定义一个类型下列的数据结构对数据包进行封装:

type struct _sdata {
int sourceID;//发送者自己的ID
int destID; //接收者的ID
char datainfo[1];//数据信息
}SDATA, *PSDATA;
teleinfor 2010-08-12
  • 打赏
  • 举报
回复
服务器采用一种SOCKET IO模型进行套接字的管理,然后实现client之间的socket数据转发即可。
羽飞 2010-08-12
  • 打赏
  • 举报
回复
服务器端accept时有一个参数,struct sockaddr* addr,这个参数返回的就是connect的客户端的地址,包括IP地址和端口,既然知道了IP地址,两个客户端就可以直接通信。如果要通过服务端转发,服务端接收到转发信息时在发给另一端就可以了,accept时返回的就是用于通信的socket,一个客户端对应一个socket,你要保存好
wsy6bxw 2010-08-12
  • 打赏
  • 举报
回复
This function sends data on a connected socket.

int send(
SOCKET s,
const char FAR* buf,
int len,
int flags
);
Parameters
s
[in] Descriptor identifying a connected socket.
buf
[in] Buffer containing the data to be transmitted.
len
[in] Length of the data in the buf parameter.
flags
[in] Indicator specifying the way in which the call is made.
Return Values

这个函数没有参数指定要发送的目的地,请问还有其他的函数么?
yanghehong 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 wsy6bxw 的回复:]
多个客户端之间进行通讯,通过服务器转发的形式,
现在客户端1请求向客户端2发送消息, 先把消息发送到服务器, 服务器怎么才能把消息转发到客户端2而不是转发给客 户端3或者其他人。(TCP协议下)send()函数好像不能指定发送目的地的信息。
请高手指教下该如何处理!
[/Quote]

这不就是一个简单的IM系统吗 :)


- 千里孤行
edison1226 2010-08-12
  • 打赏
  • 举报
回复
学习中~~~
xinglsm 2010-08-12
  • 打赏
  • 举报
回复
服务器用一个结构体来保存每个客户的信息,转发的时候就按照唯一的区别信息来转发!

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧