⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cudpsocket.h

📁 韩国英雄王座倒闭后流出来部分源代码
💻 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 + -