在服务器端每有一个客户端连接之后,都会为该客户端新建一个socket。如果我现在要在服务器端向某个客户端发一条信息的话,我就需要利用服务器端跟该客户端之间已经建立的那个socket来进行消息的发送,我想知道如何才能得到某个客户端跟服务器端之间已经建立的那个连接的指针?是否需要在服务器端的监听socket的OnAccept事件中维护一个数组,该数组的每个元素存放的是一个结构体,结构体包括客户端名称和该客户端跟服务器端已经建立的那个socket的指针?

解决方案 »

  1.   

    CPtrList又有什么作用?能否在这个类里找到某个客户端所对应的,与服务器端已经建立的那个socket的指针?
      

  2.   

    先定义一个宏来表示最大多少客户端
    然后定义一个结构体
    里面包括socket,客户端名字,连接状态
      

  3.   

    我给你一个例子:是用MFC的,也许对你有启发:
    http://www.codeproject.com/internet/ndk.asp
      

  4.   

    看来我只能用API来做了!
    这是我学网络编程的第一个例子呀,怎么就做不起来呢?
      

  5.   

    用API最好不过了,
    因为MFC的CSocket类有BUG多多,
    尤其是用在多线程,
    简直是折磨人……
      

  6.   

    网上找找吧,我一个很好的源码,如果你需要,可以发EMAIL到[email protected]。但分一定要给。
      

  7.   

    可以考虑自定义一个客户类,该类的对象实例在连接创建新的连接后动态创建。该类与CSocket类的派生类(必须派生,因为需要改写虚函数如OnReceive())是一一对应的联系。这样,socket自己就知道连接的客户端是哪个。在连接撤消时,也删除相对应的客户类对象。