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

P2P编程

开发平台:

Objective-C

  1. ////////////////////////////////////////////////////////
  2. // p2pclient.h文件
  3. #ifndef __P2PCLIENT_H__
  4. #define __P2PCLIENT_H__
  5. #include <windows.h>
  6. #include "../comm.h"
  7. class CP2PClient
  8. {
  9. public:
  10. CP2PClient();
  11. ~CP2PClient();
  12. // 初始化对象的成员
  13. BOOL Init(USHORT usLocalPort = 0);
  14. // 登陆服务器,登出服务器
  15. BOOL Login(char *pszUserName, char *pszServerIp);
  16. void Logout();
  17. // 向服务器请求用户列表,更新用户列表记录
  18. BOOL GetUserList();
  19. // 向一个用户发送消息
  20. BOOL SendText(char *pszUserName, char *pszText, int nTextLen);
  21. // 接收到来消息的虚函数
  22. virtual void OnRecv(char *pszUserName, char *pszData, int nDataLen) { }
  23. // 用户列表
  24. CPeerList m_PeerList;
  25. protected:
  26. void HandleIO(char *pBuf, int nBufLen, sockaddr *addr, int nAddrLen);
  27. static DWORD WINAPI RecvThreadProc(LPVOID lpParam);
  28. CRITICAL_SECTION m_PeerListLock; // 同步对用户列表的访问
  29. SOCKET m_s; // 用于P2P通信的套节字句柄
  30. HANDLE m_hThread; // 线程句柄
  31. WSAOVERLAPPED m_ol; // 用于等待网络事件的重叠结构
  32. PEER_INFO m_LocalPeer; // 本用户信息
  33. DWORD m_dwServerIp; // 服务器IP地址
  34. BOOL m_bThreadExit; // 用于指示接收线程退出
  35. BOOL m_bLogin; // 是否登陆
  36. BOOL m_bUserlistCmp; // 用户列表是否传输结束
  37. BOOL m_bMessageACK; // 是否接收到消息应答
  38. };
  39. #endif // __P2PCLIENT_H__