?? cudpsocket.h
字號:
////////////////////////////////////////////////////////////////////////////////////////
//
// CUDPSOCKET_H 2003斥 6巋 26老 格
//
// by Mun Sung-hun (badajoa2002@hotmail.net)
// Copyright(C) 2003
//
//
////////////////////////////////////////////////////////////////////////////////////////
#ifndef CUDPSOCKET_H
#define CUDPSOCKET_H
#include "XPtrList.h"
#include "MemPool.h"
#include "tgaBase.h"
const int DEF_UDPLISTHENTHREAD = 1 ;
class CUdpSocket;
typedef CUdpSocket * _LPUDPSOCKET ;
////////////////////////////////////////////////////////////////////////////////////////
// UDP Class
//
////////////////////////////////////////////////////////////////////////////////////////
class CUdpSocket {
public:
CUdpSocket();
~CUdpSocket();
private:
SOCKET m_ListenSock;
SOCKET m_SendSock;
SOCKADDR_IN m_SendAddr;
SOCKADDR_IN m_LogAddr;
char * m_lpRecvBuf ;
char * m_lpSendBuf ;
char * m_lpLogBuf ;
int m_nRecvByte ;
int m_nSendByte ;
char m_cMsg[50] ;
char m_cUserMsg[50] ;
CRITICAL_SECTION m_LogLock;
HANDLE m_hReadEventCompleted; // IO READ 肯豐登菌瀾闌 舅覆
HANDLE m_hUdpThreadEndEvent; // UDP Thread 輛豐
CXPtrList m_listReadCompleted; // 肯豐等 IO 鈕, 貿府甫 扁促赴促.
VOID CLOSEHANDLE( HANDLE &x )
{
if( x != NULL ){
CloseHandle(x);
x = NULL;
}
}
VOID CLOSESOCKET( SOCKET &x )
{
if( x != INVALID_SOCKET ){
closesocket(x);
x = INVALID_SOCKET;
}
}
VOID CLOSEEVENT( HANDLE &x )
{
if( x != NULL ){
SetEvent(x);
CloseHandle(x);
x = NULL;
}
}
public:
bool bInit(char * pIPAddr = NULL,int iPort = 2000);
bool bSendTo(char * pAddress = NULL,int iPort = 2000);
bool bCreateSock() ;
bool bStartThread() ;
void ListenThreadProc() ;
void ReadThreadProc() ;
void ReadPacket(_LPUDPPACKET) ;
void SendtoPacket(_LPUDPPACKET) ;
void SendToLogPacket(_LPUDPPACKET) ;
void SendtoWorldServer(_LPUDPPACKET);
void FindPlayer(_LPSOCKET_FD,char *,BYTE nOP = 0 ) ;
void ServerCommand(_LPSOCKET_FD,BYTE nServerCommand,bool bOnOff ) ;
//漂瀝 葷儈磊俊霸 郴府綽 command
//void ServerCommand(_LPSOCKET_FD lpSocketFd, BYTE nServerCommand, char* pCharId, bool bOnOff );
//Jason Added
void ServerCommand(_LPSOCKET_FD lpSocketFd, BYTE nServerCommand, char* pGMID, char* pCharId, bool bOnOff );
void PartyChat(_LPZW_PARTYCHAT_ASK) ;
void SendChatMsg(_LPSOCKET_FD,_LPZP_CHATWHISPER_ASK) ;
void SendNoticeMsg(DWORD wMAPID, char * lpMsg) ;
void SendGuildNotice(_LPZP_GUILDMSG_ASK) ;
#ifdef DEF_GUILDBANK
void SendGuildNotice( char *pGuildName, char *pMsg ) ;
#endif
// --------------------------------------------------------------------------------
// 竊薦 Pointer Function
// --------------------------------------------------------------------------------
friend void UDPPacket_Nothing (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Ask_FindPlayer (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Rep_FindPlayer (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Ask_ChatWhisper (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Rep_ChatWhisper (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Ask_PartyChat (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_Notice (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_ServerCommand (_LPUDPSOCKET,_LPUDPPACKET) ;
friend void UDPPacket_GuildNoticeMsg (_LPUDPSOCKET,_LPUDPPACKET) ;
static DWORD WINAPI ListenThreadRunner(IN LPVOID ParamPtr) ;
static DWORD WINAPI ReadThreadRunner(IN LPVOID ParamPtr) ;
static DWORD WINAPI SendThreadRunner(IN LPVOID ParamPtr) ;
CMemPool <_UDPPACKET>* m_pUDPIOPool;
};
typedef struct
{
void ( *proc) (_LPUDPSOCKET , _LPUDPPACKET);
} ONUDPTRANSFUNC;
#endif //CUDPSOCKET_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -