p2pclient.h
来自「实现P2P NAT 客户端之间的通信,可以在同一LAN之间通信,也可以在不同LA」· C头文件 代码 · 共 48 行
H
48 行
#ifndef __P2P_CLIENT_H__
#define __P2P_CLIENT_H__
#include <WinSock2.h>
#include "../CommonDefine.h"
class P2PClient
{
public:
P2PClient();
~P2PClient();
bool Login(char *pszUserName, char *pszServerIP);
bool Logout();
bool GetUserList();
bool SendText(char *pszUserName, char* pszText, int nTextLen);
void DisplayUserList();
private:
bool Initialize();
static DWORD WINAPI RecvThreadProc(LPVOID lpParam);
// 处理各个消息的函数
bool ProcUserLogAckMsg(MSGDef::TMSG_HEADER *pMsgHeader);
bool ProcGetUserList(MSGDef::TMSG_HEADER *pMsgHeader);
bool ProcUserListCmpMsg();
bool ProcP2PMsg(MSGDef::TMSG_HEADER *pMsgHeader, const sockaddr_in& sockAddr);
bool ProcP2PConnectMsg(MSGDef::TMSG_HEADER *pMsgHeader, const sockaddr_in& sockAddr);
bool ProcP2PConnectAckMsg(MSGDef::TMSG_HEADER *pMsgHeader, const sockaddr_in& sockAddr);
bool ProcUserActiveQueryMsg(MSGDef::TMSG_HEADER *pMsgHeader, const sockaddr_in& sockAddr);
private:
SOCKET m_sSocket; // 套接字
Peer_Info m_PeerInfo; // 本机信息
PeerList m_PeerList; // 与本机相连的节点链表
HANDLE m_hThread; // 线程句柄
DWORD m_dwServerIP; // server IP地址
WSAOVERLAPPED m_ol; // 用于等待网络事件的重叠结构
CRITICAL_SECTION m_PeerListLock; // 用于读取m_PeerList的临界区对象
bool m_bExitThread; // 是否退出线程
bool m_bLogin; // 是否已经登陆服务器了
bool m_bUserListCmp; // 是否得到了用户列表
bool m_bMessageACK; // 是否接收到消息应答
};
#endif // __P2P_CLIENT_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?