?? helper.cpp
字號:
#include "stdafx.h"
#include <process.h>
#include "common.h"
///////////////////////////////////////////////////////////////////////////////////////////////
extern DWORD g_dwPlayerCommThreadId ;
///////////////////////////////////////////////////////////////////////////////////////////////
char g_szDBServerIP[16];
char g_szServerName[128];// = "NTGATEWAY";
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void Init()
{
InitWinSock();
memset(g_szServerName,0,128);
//gethostname(g_szServerName,128);
////////////////////////////////////////////////////////////
//讀IP
HKEY hkey;
if(RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\GameKing",
0L,
KEY_ALL_ACCESS,
&hkey)==ERROR_SUCCESS)
{
DWORD dwdatatype,dwlen;
dwlen=sizeof(g_szDBServerIP);
if(RegQueryValueEx(
hkey,
"DBServerIP",
NULL,
&dwdatatype,
(LPBYTE)g_szDBServerIP,
&dwlen)!=ERROR_SUCCESS)
{
//error
}
}
else
{
//error
}
///////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//讀HOST NAME
//HKEY hkey;
if(RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\GameKing",
0L,
KEY_ALL_ACCESS,
&hkey)==ERROR_SUCCESS)
{
DWORD dwdatatype,dwlen;
dwlen=sizeof(g_szServerName);
if(RegQueryValueEx(
hkey,
"DBServerName",
NULL,
&dwdatatype,
(LPBYTE)g_szServerName,
&dwlen)!=ERROR_SUCCESS)
{
//error
}
}
else
{
//error
}
///////////////////////////////////////////////////////////////////////////////////////////
//InitSimpleMAPI();
//SendMail();
//從注冊表中讀出g_szSMTPServerIP
}
void ExitInstance()
{
PostThreadMessage(g_dwPlayerCommThreadId,UM_CLOSE,0,0);
WSACleanup();
}
void InitCriticalSections()
{
}
//Common Helpers
void InitWinSock()
{
WSADATA wsaData;
WSAStartup(WINSOCK_VERSION,&wsaData);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void GetPeerIPBySocket(SOCKET sock,char *pszIP)
{
struct sockaddr addrname;
int namelen = sizeof(struct sockaddr);
//getsockname(sock,&addrname,&namelen);//獲取本機IP,
getpeername(sock,&addrname,&namelen);//獲取對端IP
struct sockaddr_in addr;
memcpy((char *)&addr,(char *)&addrname,sizeof(sockaddr));
strcpy(pszIP,inet_ntoa((in_addr)addr.sin_addr));
}
///////////////////////////////////////////////////////////////////////////////////////////////
int RecvFixedBytes(SOCKET s,char *buf,int nBytesWantToRecv)
{
int cnt;
int rcnt;
for(cnt= 0; cnt < nBytesWantToRecv; cnt+= rcnt)
{
rcnt= recv(s,buf+cnt,(unsigned) (nBytesWantToRecv-cnt),0);
if( rcnt <= 0 )
return SOCKET_ERROR;
}
return cnt;
}
int AsyncReadLine(SOCKET hSocket,char *buf, int count)
{
char *ptr = buf;
int nRead = 0;
char c;
while(nRead < count)
{
int nBytesRecv = recv(hSocket,&c,1,0);
if ( nBytesRecv == 1 )
{
nRead ++;
*ptr++ = c;
if ( c == '\n' )
{
break;
}
}
}
*ptr = '\0';
return nRead;
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
//線程代碼
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void ListenThread(LPVOID hAcceptSocket )
{
TRACE("----------------------------------------------------------\n");
TRACE("Listen/AcceptThread (ID=0x%x) started !\n",GetCurrentThreadId());
TRACE("----------------------------------------------------------\n");
SOCKET hAcceptGameSocket = (SOCKET)hAcceptSocket;
for (;;)
{
SOCKET hPlayerCommSocket;
struct sockaddr RemoteAddr;
int AddrLen = sizeof(struct sockaddr);
if ((hPlayerCommSocket = accept (hAcceptGameSocket, (struct sockaddr FAR *)&RemoteAddr,
(int FAR* ) &AddrLen))!=INVALID_SOCKET)
{
TRACE("Accept new client connection on socket: %d\n",hPlayerCommSocket);
_beginthread(PlayerCommThread,0,(LPVOID)hPlayerCommSocket);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -