comm.h
上传用户:zhangjjyh
上传日期:2021-11-11
资源大小:1251k
文件大小:2k
源码类别:

P2P编程

开发平台:

Objective-C

  1. ////////////////////////////////////
  2. // comm.h文件
  3. #ifndef __COMM_H__
  4. #define __COMM_H__
  5. #define MAX_USERNAME 15
  6. #define MAX_TRY_NUMBER 5
  7. #define MAX_ADDR_NUMBER 5
  8. #define MAX_PACKET_SIZE 1024
  9. #define SERVER_PORT 4567
  10. // 一个终端信息
  11. struct ADDR_INFO
  12. {
  13. DWORD dwIp;
  14. u_short nPort;
  15. };
  16. // 一个节点信息
  17. struct PEER_INFO
  18. {
  19. char szUserName[MAX_USERNAME];  // 用户名
  20. ADDR_INFO addr[MAX_ADDR_NUMBER]; // 由节点的私有终端和公共终端组成的数组
  21. u_char AddrNum;  // addr数组元素数量
  22. ADDR_INFO p2pAddr;  // P2P通信时应使用的地址(客户方使用)
  23. DWORD dwLastActiveTime;  // 记录此用户的活动时间(服务器使用)
  24. };
  25. // 通信消息格式
  26. struct CP2PMessage
  27. {
  28. int nMessageType; // 消息类型
  29. PEER_INFO peer; // 节点信息
  30. };
  31. // 用户直接与服务器之间发送的消息
  32. #define USERLOGIN 101 // 用户登陆服务器
  33. #define USERLOGOUT 102 // 用户登出服务器
  34. #define USERLOGACK  103
  35. #define GETUSERLIST 104 // 请求用户列表
  36. #define USERLISTCMP 105 // 列表传输结束
  37. #define USERACTIVEQUERY 106 // 服务器询问一个用户是否仍然存活
  38. #define USERACTIVEQUERYACK 107 // 服务器询问应答
  39. // 通过服务器中转,用户与用户之间发送的消息
  40. #define P2PCONNECT 108 // 请求与一个用户建立连接
  41. #define P2PCONNECTACK 109 // 连接应答,此消息用于打洞
  42. // 用户直接与用户之间发送的消息
  43. #define P2PMESSAGE 110 // 发送消息
  44. #define P2PMESSAGEACK 111 // 收到消息的应答
  45. class CPeerList
  46. {
  47. public:
  48. CPeerList();
  49. ~CPeerList();
  50. // 向列表中添加一个节点
  51. BOOL AddAPeer(PEER_INFO *pPeer);
  52. // 查找指定用户名对应的节点
  53. PEER_INFO *GetAPeer(char *pszUserName);
  54. // 从列表中删除一个节点
  55. void DeleteAPeer(char *pszUserName);
  56. // 删除所有节点
  57. void DeleteAllPeers();
  58. // 表头指针和表的大小
  59. PEER_INFO *m_pPeer;
  60. int m_nCurrentSize;
  61. protected:
  62. int m_nTatolSize;
  63. };
  64. #endif // __COMM_H__