多个client连接到SERVER,如何只给一个指定的client发送一个server发起的消息

dood 2003-10-21 08:15:22
多个client连接到server,现在在server中一个事件,触发某个函数,要求在这个函数中可以发送一个socket包到一个指定的client。我想:每一个连接其实都是一个线程,如何在其他函数中,调用其中一个线程中的socket发送数据呢?
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jongin 2003-10-21
  • 打赏
  • 举报
回复
呵呵,谢谢2位爷的支持
Eearbird 2003-10-21
  • 打赏
  • 举报
回复
正如楼上所说的,将客户端的连接信息管理起来。就能很容易解决这个问题。
而且:
“我想:每一个连接其实都是一个线程”
其实不然,不用每个连接都开线程。
farfh 2003-10-21
  • 打赏
  • 举报
回复
楼上的方法可行,其实只要有个管理所有客户的连表就成,无论使用map 还是list等等,都无所谓,需要发消息的时候进行一下搜索就成了。
jongin 2003-10-21
  • 打赏
  • 举报
回复
如果你用的是TCP/IP的连接方式,可以建立一个全局的指针链表,那么你可以在服务器端的onaccept方法里,只要有客户端的被服务器建听到了,就向指针链表里写入一个socket的指针,然后当客户端发信息给某个其他的客户端的时候,你可以让这个客户端先发一个自定义的结构性变量,这个结构包括要发送的目的地的ip和端口,服务器解析了这个结构,服务器通过遍历指针表,用getpeername()方法找到相应的socket,把这个信息就发过去了!不是很难的。

如果你用的是UDP/IP,也是建立一个链表,由于UDP本身是非链接的,那么你就让客户端一登陆就发一个包含IP和端口的信息,解析后把这个信息,存入一个指针链表,同样当一个客户端发信息的时候,搜索链表,转发给相应的socket。

附:指针链表定义:CPtrList *a = new CPtrList();
dood 2003-10-21
  • 打赏
  • 举报
回复
老大,说清楚点好么?我现在就是在用socket.可是怎么实现用一个函数,去调用另外一个线程中的CSocket呢?全局变量?
醉马不肖 2003-10-21
  • 打赏
  • 举报
回复
socket
dood 2003-10-21
  • 打赏
  • 举报
回复
就类似聊天室里的私聊。一个人发socket给server,server将这个消息发给另外一个client,应该怎么做????

18,356

社区成员

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

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