多个client连接到server,现在在server中一个事件,触发某个函数,要求在这个函数中可以发送一个socket包到一个指定的client。我想:每一个连接其实都是一个线程,如何在其他函数中,调用其中一个线程中的socket发送数据呢?

解决方案 »

  1.   

    就类似聊天室里的私聊。一个人发socket给server,server将这个消息发给另外一个client,应该怎么做????
      

  2.   

    老大,说清楚点好么?我现在就是在用socket.可是怎么实现用一个函数,去调用另外一个线程中的CSocket呢?全局变量?
      

  3.   

    如果你用的是TCP/IP的连接方式,可以建立一个全局的指针链表,那么你可以在服务器端的onaccept方法里,只要有客户端的被服务器建听到了,就向指针链表里写入一个socket的指针,然后当客户端发信息给某个其他的客户端的时候,你可以让这个客户端先发一个自定义的结构性变量,这个结构包括要发送的目的地的ip和端口,服务器解析了这个结构,服务器通过遍历指针表,用getpeername()方法找到相应的socket,把这个信息就发过去了!不是很难的。如果你用的是UDP/IP,也是建立一个链表,由于UDP本身是非链接的,那么你就让客户端一登陆就发一个包含IP和端口的信息,解析后把这个信息,存入一个指针链表,同样当一个客户端发信息的时候,搜索链表,转发给相应的socket。附:指针链表定义:CPtrList *a = new CPtrList();
      

  4.   

    楼上的方法可行,其实只要有个管理所有客户的连表就成,无论使用map 还是list等等,都无所谓,需要发消息的时候进行一下搜索就成了。