1.如果我采用socket的通信做一个服务端,采用I/O端口完成模式。
我需要用typedef map<SOCKET,unsigned long> buslist;
用buslist保存每次通信的SOCKET连接,请问unsigned long你们一般使用什么做标识,是使用时间戳,使用sin_port
2.请问下同一个IP地址发送给服务端的socket套接字有什么区别吗?

解决方案 »

  1.   

    取决于你自己想保存什么信息,SOCKET就可以通信了,但是你可以同时保存一个ID或什么别的
      

  2.   

    1. 要看你需要保存客户端的什么信息了,比如ID,用户名什么的都可以,这样你可以将map的value定义为一个结构体也是可以的。2. Port可以不一样啊,IP地址相同,Port不一样,你可以想象一下,测试服务器压力的时候,你可以在客户端开多线程模拟多个客户端去连接服务器
      

  3.   

    请问这个port和socket监听的端口有什么区别,还有socket是一个结构体吗?主要是封装的什么呀,它里面有连接地址以及连接端口号吗?
      

  4.   

    1. 要看你需要保存客户端的什么信息了,比如ID,用户名什么的都可以,这样你可以将map的value定义为一个结构体也是可以的。
    2. Port可以不一样啊,IP地址相同,Port不一样,你可以想象一下,测试服务器压力的时候,你可以在客户端开多线程模拟多个客户端去连接服务器 
     
      

  5.   

    typedef map<SOCKET,stConnection*> buslist;我一般是保存个连接类对象. 里面有socket的相关信息.自定义你需要保存的变量. 比如还有用户名,连接时间.收发包次数.最新一次收包时间.心跳时间.等等.
      

  6.   

    typedef map<SOCKET,unsigned long> buslist;--这种设计是不可思议的神迹。
      

  7.   


    你其实是为了让socket句柄和你的对象实现“一对一绑定”,不必构造一个全局字典。socket句柄在和完成端口捆绑的时候,会接受你的一个参数KEY,你去看看CreateIoCompletionPort这个函数的参数。