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:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,280 @@
#include "stdafx.h"
#include <winsock2.h>
#include <windows.h>
#include <wsipx.h>
#include <cassert>
#include "SocketFactory.h"
//#include "../../Utility/Math/Math.h"
CSocketFactory::CSocketFactory(int nSocketFamily, int nSocketType, int nSocketProtocol, int nAddressLen)
: m_nSockFamily(nSocketFamily), m_nSockType(nSocketType), m_nSockProtocol(nSocketProtocol),
m_nAddressLen(nAddressLen)
{
}
CINETFamilyFactory::CINETFamilyFactory(int nSocketType, int nSocketProtocol)
: CSocketFactory(AF_INET, nSocketType, nSocketProtocol, sizeof(SOCKADDR_IN))
{
}
CTCPFactory::CTCPFactory()
: CINETFamilyFactory(SOCK_STREAM, IPPROTO_TCP)
{
}
CUDPFactory::CUDPFactory()
: CINETFamilyFactory(SOCK_DGRAM, IPPROTO_UDP)
{
}
/*
CIPXFamilyFactory::CIPXFamilyFactory(int nSocketType, int nSocketProtocol)
: CSocketFactory(AF_IPX, nSocketType, nSocketProtocol, sizeof(SOCKADDR_IPX))
{
}
CSPXFactory::CSPXFactory()
: CIPXFamilyFactory(SOCK_STREAM, NSPROTO_SPX)
{
}
CIPXFactory::CIPXFactory()
: CIPXFamilyFactory(SOCK_DGRAM, NSPROTO_IPX)
{
}
*/
SOCKET CSocketFactory::CreateSocket()
{
SOCKET hSocket = WSASocket(m_nSockFamily, m_nSockType, m_nSockProtocol,
NULL, 0, WSA_FLAG_OVERLAPPED);
return hSocket;
}
SOCKET CSocketFactory::CreateConnectedSocket(const char* lpConnAddr, unsigned short usPort)
{
SOCKADDR sockAddr;
if (!SetAddr(&sockAddr, lpConnAddr, usPort))
{
return INVALID_SOCKET;
}
SOCKET connectedSocket = CreateSocket();
if (INVALID_SOCKET != connectedSocket)
{
if (SOCKET_ERROR == connect(connectedSocket, &sockAddr, m_nAddressLen))
{
closesocket(connectedSocket);
connectedSocket = INVALID_SOCKET;
}
}
return connectedSocket;
}
SOCKET CSocketFactory::CreateBindedSocket(const char* lpBindAddr, unsigned short usPort)
{
SOCKADDR sockAddr;
if (!SetAddr(&sockAddr, lpBindAddr, usPort))
{
return INVALID_SOCKET;
}
SOCKET bindedSocket = CreateSocket();
if(INVALID_SOCKET != bindedSocket)
{
BOOL bReuseAddr = TRUE;
if (SOCKET_ERROR == setsockopt(bindedSocket, SOL_SOCKET, SO_REUSEADDR,
(char *)&bReuseAddr, sizeof(bReuseAddr)))
{
closesocket(bindedSocket);
bindedSocket = INVALID_SOCKET;
}
else
{
if(SOCKET_ERROR == bind(bindedSocket, &sockAddr, m_nAddressLen))
{
closesocket(bindedSocket);
bindedSocket = INVALID_SOCKET;
}
}
}
return bindedSocket;
}
SOCKET CSocketFactory::CreateListenSocket(const char* lpListenAddr, unsigned short usPort, int nBackLog)
{
nBackLog = min(nBackLog, MAX_BACKLOG);
// bind server to Server address
SOCKET sdListen = CreateBindedSocket(lpListenAddr, usPort);
if (INVALID_SOCKET != sdListen)
{
// start listening
if (SOCKET_ERROR == listen(sdListen, nBackLog))
{
closesocket(sdListen);
sdListen = INVALID_SOCKET;
}
}
return sdListen;
}
bool CINETFamilyFactory::SetAddr(LPSOCKADDR lpSA, const char* szAddr, unsigned short usPort)
{
int nAddrLen = sizeof(SOCKADDR_IN);
memset(lpSA, 0, nAddrLen);
LPSOCKADDR_IN lpSA_in = reinterpret_cast<LPSOCKADDR_IN>(lpSA);
if (0 != szAddr)
{
lpSA_in->sin_family = m_nSockFamily;
lpSA_in->sin_addr.S_un.S_addr = inet_addr(szAddr);
lpSA_in->sin_port = htons(usPort);
if(0 == lpSA_in->sin_addr.S_un.S_addr)
{
return false;
}
}
else
{
lpSA_in->sin_addr.S_un.S_addr = htonl(INADDR_ANY);
}
lpSA_in->sin_family = m_nSockFamily;
lpSA_in->sin_port = htons(usPort);
return true;
}
bool CINETFamilyFactory::GetNetworkInfo(char *Address_Out, int nMaxBufferSize)
{
const int MAX_HOSTNAME_BUFFER = 256;
char szHostName[MAX_HOSTNAME_BUFFER];
if(!gethostname(szHostName, MAX_HOSTNAME_BUFFER - 1))
{
szHostName[MAX_HOSTNAME_BUFFER - 1] = '\0';
PHOSTENT pHost = gethostbyname(szHostName);
if(NULL == pHost)
{
return false;
}
IN_ADDR Addr = {0,};
int Count = 0;
for(Count = 0;pHost->h_addr_list[Count]; ++Count)
{
memcpy(&Addr, pHost->h_addr_list[Count], sizeof(IN_ADDR));
strncpy(Address_Out, inet_ntoa(Addr), nMaxBufferSize - 1);
Address_Out[nMaxBufferSize - 1] = '\0';
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
// 10.0.0.0 ~ 10.255.255.255
// 172.16.0.0 ~ 172.31.255.255
// 192.168.0.0 ~ 192.168.255.255
if((unsigned char)10 == Addr.S_un.S_un_b.s_b1)
{
continue;
}
else if((unsigned char)172 == Addr.S_un.S_un_b.s_b1)
{
if(Addr.S_un.S_un_b.s_b2 >= (unsigned char)16 && Addr.S_un.S_un_b.s_b2 <= (unsigned char)31)
{
continue;
}
}
else if((unsigned char)192 == Addr.S_un.S_un_b.s_b1)
{
if((unsigned char)168 == Addr.S_un.S_un_b.s_b2)
{
continue;
}
}
return true;
}
if(0 != Count)
{
return true;
}
}
return false;
}
bool CTCPFactory::SetLinger(SOCKET hSocket, bool bOn, unsigned short usTimeOut)
{
linger socketLinger;
socketLinger.l_onoff = bOn ? 1 : 0;
socketLinger.l_linger = usTimeOut;
if(SOCKET_ERROR == setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
(char *)&socketLinger, sizeof(linger)))
{
return false;
}
return true;
}
/*
bool CIPXFamilyFactory::SetAddr(LPSOCKADDR lpSA, char *szAddr, unsigned short usPort)
{
if(0 == szAddr) { return false; }
// get the offset for node number / network number separator
LPSTR lpszNodeNum = strchr(szAddr, '.');
if (0 == lpszNodeNum)
{
return false;
}
++lpszNodeNum;
LPSOCKADDR_IPX lpSA_ipx = reinterpret_cast<LPSOCKADDR_IPX>(lpSA);
lpSA_ipx->sa_family = m_nSockFamily;
Math::Convert::AcToHe(szAddr,(char*)&lpSA_ipx->sa_netnum, 4);
Math::Convert::AcToHe(lpszNodeNum,(char*)&lpSA_ipx->sa_nodenum, 6);
lpSA_ipx->sa_socket = htons(usPort);
return true;
}
bool CIPXFamilyFactory::GetNetworkInfo(char *Address_Out, int nMaxBufferSize)
{
return true;
}
*/