Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
266
Server/NFAuthTool/NFAuthServer/NaveNet/NFNet.h
Normal file
266
Server/NFAuthTool/NFAuthServer/NaveNet/NFNet.h
Normal file
@@ -0,0 +1,266 @@
|
||||
/**
|
||||
* @file NFNet.h
|
||||
* @brief Network Base Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
// Windows <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
#include <windows.h>
|
||||
#include <time.h> // timer
|
||||
#include <assert.h> // assert
|
||||
#include <process.h> // Thread
|
||||
#include <stdio.h> // standard I/O
|
||||
#include <stdlib.h>
|
||||
|
||||
// sock
|
||||
#include <winsock2.h> // win32 socket
|
||||
#pragma comment(lib,"ws2_32.lib")
|
||||
|
||||
#include <Mswsock.h> // extension socket library
|
||||
#pragma comment(lib,"mswsock.lib")
|
||||
|
||||
#include "mmsystem.h" // <20><>Ƽ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD> Ÿ<≯Ӹ<CCB8> <20><><EFBFBD><EFBFBD>
|
||||
#pragma comment(lib,"winmm.lib")
|
||||
|
||||
#include "NFPacket.h"
|
||||
#include "NFSync.h"
|
||||
|
||||
namespace NaveNet {
|
||||
|
||||
#define MAX_PACKET 256 /// <20>ִ<EFBFBD> Packet <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define WM_CONNECT WM_APP + 0x1001 /// CONNECT <20><EFBFBD><DEBD><EFBFBD>
|
||||
#define WM_RECV_MSG WM_APP + 0x1002 /// RECV <20><EFBFBD><DEBD><EFBFBD>
|
||||
#define WM_SOCK_CLOSE WM_APP + 0x1003 /// CLOSE <20><EFBFBD><DEBD><EFBFBD>
|
||||
|
||||
/**
|
||||
* @class NFPacketQueue
|
||||
* @brief Packet Queue ó<><C3B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
*
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-04
|
||||
*/
|
||||
class NFPacketQueue
|
||||
{
|
||||
/// Queue <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INDEX <20><><EFBFBD><EFBFBD>ü
|
||||
struct INDEX
|
||||
{
|
||||
/// <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><>ġ
|
||||
INDEX* pNext;
|
||||
/// <20><>Ŷ
|
||||
NFPacket Packet;
|
||||
|
||||
INDEX()
|
||||
{
|
||||
pNext = NULL;
|
||||
Packet.Init();
|
||||
}
|
||||
};
|
||||
|
||||
public:
|
||||
/// NFPacketQueue <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NFPacketQueue()
|
||||
{
|
||||
pList = NULL;
|
||||
pHead = NULL;
|
||||
pTail = NULL;
|
||||
nQueueCnt = 0;
|
||||
nMaxQueueCnt = 0;
|
||||
}
|
||||
|
||||
/// NFPacketQueue <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
||||
~NFPacketQueue()
|
||||
{
|
||||
Release();
|
||||
}
|
||||
|
||||
/// Queue<75><65> <20>ʱ<EFBFBD>ȭ <20>մϴ<D5B4>.
|
||||
VOID Release()
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(pList)
|
||||
{
|
||||
delete [] pList;
|
||||
pList = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/// <20><>Ŷ ť<><C5A5> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
BOOL Create(int nMAXCnt = MAX_PACKET)
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(nMAXCnt <= 0) return FALSE;
|
||||
|
||||
if(pList)
|
||||
{
|
||||
delete [] pList;
|
||||
pList = NULL;
|
||||
}
|
||||
|
||||
nMaxQueueCnt = nMAXCnt;
|
||||
|
||||
if((pList = new INDEX[nMaxQueueCnt]) == NULL)
|
||||
{
|
||||
nMaxQueueCnt = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for(int i = nMaxQueueCnt - 1; i >= 0 ; i--)
|
||||
{
|
||||
if( (i+1) == nMaxQueueCnt)
|
||||
{
|
||||
pList[i].pNext = &pList[0];
|
||||
continue;
|
||||
}
|
||||
pList[i].pNext = &pList[i+1];
|
||||
}
|
||||
pHead = pTail = &pList[0];
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/// ť<><C5A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
int GetQueCnt()
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
return nQueueCnt;
|
||||
}
|
||||
|
||||
/// ť<><C5A5> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
void Reset()
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
pHead = pTail = &pList[0];
|
||||
nQueueCnt = 0;
|
||||
}
|
||||
|
||||
/// <20><>Ŷ<EFBFBD><C5B6> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
||||
BOOL Add(NFPacket& Packet)
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(!pList) return FALSE;
|
||||
if(nQueueCnt == nMaxQueueCnt)
|
||||
{
|
||||
nQueueCnt = 0;
|
||||
pHead = pTail = &pList[0];
|
||||
return FALSE;
|
||||
}
|
||||
//if(szData[0] == NULL) return FALSE;
|
||||
if(Packet.m_Header.Size <= 0) return FALSE;
|
||||
if(Packet.m_Header.Size >= DEF_MAXPACKETSIZE) return FALSE;
|
||||
|
||||
// Head<61><64> Size<7A><65> Header <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
int PacketSize = Packet.m_Header.Size-sizeof(Packet.m_Header);
|
||||
|
||||
// <20><><EFBFBD>缭 <20><><EFBFBD><EFBFBD>..
|
||||
CopyMemory(&pTail->Packet.m_Header, &Packet.m_Header, sizeof(Packet.m_Header));
|
||||
CopyMemory(pTail->Packet.m_Packet,Packet.m_Packet,PacketSize);
|
||||
pTail->Packet.m_Packet[PacketSize] = 0;
|
||||
|
||||
|
||||
pTail = pTail->pNext;
|
||||
|
||||
InterlockedIncrement((LONG*)&nQueueCnt);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <09><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
* @param Packet <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <09><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
int GetPnt(NFPacket** Packet)
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(!pList) return -1;
|
||||
if(nQueueCnt == 0) return -1;
|
||||
|
||||
int nLen = -1;
|
||||
*Packet = &pHead->Packet;
|
||||
nLen = pHead->Packet.m_Header.Size;
|
||||
|
||||
return nLen;
|
||||
}
|
||||
|
||||
/// ù<><C3B9><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
void Del()
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(!pList) return;
|
||||
if(nQueueCnt == 0) return;
|
||||
|
||||
int nLen = -1;
|
||||
|
||||
pHead->Packet.Init();
|
||||
pHead = pHead->pNext;
|
||||
|
||||
InterlockedDecrement((LONG*)&nQueueCnt);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <09><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
* @param Packet <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <09><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
int Get(NFPacket& Packet)
|
||||
{
|
||||
NFSyncLock Sync(&nfSync);
|
||||
|
||||
if(!pList) return -1;
|
||||
if(nQueueCnt == 0) return -1;
|
||||
|
||||
int nLen = -1;
|
||||
int PacketSize = pHead->Packet.m_Header.Size-sizeof(pHead->Packet.m_Header);
|
||||
|
||||
CopyMemory(&Packet.m_Header, &pHead->Packet.m_Header, sizeof(Packet.m_Header));
|
||||
CopyMemory(Packet.m_Packet, pHead->Packet.m_Packet, PacketSize);
|
||||
Packet.m_Packet[PacketSize] = 0;
|
||||
|
||||
nLen = Packet.m_Header.Size;
|
||||
|
||||
pHead->Packet.Init();
|
||||
pHead = pHead->pNext;
|
||||
|
||||
InterlockedDecrement((LONG*)&nQueueCnt);
|
||||
|
||||
return nLen;
|
||||
}
|
||||
|
||||
private:
|
||||
/// <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
INDEX* pList;
|
||||
/// <20><>Ŷ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>
|
||||
INDEX* pHead;
|
||||
/// <20><>Ŷ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>
|
||||
INDEX* pTail;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> ť<><C5A5> <20><><EFBFBD><EFBFBD>
|
||||
int nQueueCnt;
|
||||
/// <20>ִ<EFBFBD> ť<><C5A5> <20><><EFBFBD><EFBFBD>
|
||||
int nMaxQueueCnt;
|
||||
/// <20><><EFBFBD><EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
|
||||
NFSync nfSync;
|
||||
};
|
||||
|
||||
/// Socket<65><74> Port<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
int SockRemotePort( SOCKET Sock );
|
||||
/// Socket<65><74> IP<49><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
int SockRemoteIP( SOCKET Sock, unsigned char ip[4] );
|
||||
/// Domain<69≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD> ip<69><70> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
BOOL GetHostIPByDomain(IN_ADDR &Addr, const char *szDomain);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user