📄 serverutils.cpp
字号:
/****************************************************************************
;
; MODULE: ServerUtils (.CPP)
;
; PURPOSE: Server Utility Functions
;
; HISTORY: 08/04/98 [blg] This file was created
;
; COMMENT: Copyright (c) 1998, Monolith Productions Inc.
;
****************************************************************************/
// Includes...
#include "StdAfx.h"
#include "ServerUtils.h"
#include "WinInet.h"
// Externs...
extern CString g_sWebRegUrl;
extern DGUID GAMEGUID;
// Globals...
HINSTANCE s_hServerDLL = NULL;
CreateServerFn s_fnCreateServer = NULL;
DeleteServerFn s_fnDeleteServer = NULL;
ServerInterface* s_pServerMgr = NULL;
// Functions...
BOOL LoadServerDLL(char *pDLLName)
{
SI_CREATESTATUS status;
if (s_pServerMgr && s_hServerDLL)
{
return(TRUE);
}
s_hServerDLL = LoadLibrary(pDLLName);
if(!s_hServerDLL)
{
return(FALSE);
}
s_fnCreateServer = (CreateServerFn)GetProcAddress(s_hServerDLL, "CreateServer");
s_fnDeleteServer = (DeleteServerFn)GetProcAddress(s_hServerDLL, "DeleteServer");
if (!s_fnCreateServer || !s_fnDeleteServer)
{
FreeLibrary(s_hServerDLL);
s_hServerDLL = NULL;
return(NULL);
}
s_pServerMgr = NULL;
status = s_fnCreateServer(SI_VERSION, GAMEGUID, &s_pServerMgr);
if (status != 0)
{
return(FALSE);
}
return(TRUE);
}
ServerInterface* GetServerInterface()
{
return(s_pServerMgr);
}
void FreeServerDLL()
{
if (s_hServerDLL && s_fnDeleteServer)
{
s_fnDeleteServer();
FreeLibrary(s_hServerDLL);
}
s_hServerDLL = NULL;
s_fnCreateServer = NULL;
s_fnDeleteServer = NULL;
s_pServerMgr = NULL;
}
BOOL SendWebInfo2(const char* sSite, const char* sInfo, BOOL bWait)
{
// Sanity checks...
if (!sSite) return(FALSE);
if (!sInfo) return(FALSE);
// Open the internet and get a handle to it...
HINTERNET hNet = InternetOpen("GameServ", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!hNet) return(FALSE);
// Create the URL we want from the given parameters...
CString sUrl(sSite);
sUrl += "?";
sUrl += sInfo;
// Convert spaces to pluses...
int nLen = sUrl.GetLength();
for (int i = 0; i < nLen; i++)
{
if (sUrl.GetAt(i) == ' ') sUrl.SetAt(i, '+');
}
// Open the URL we want...
HINTERNET hHttp = InternetOpenUrl(hNet, sUrl, NULL, 0, 0, 0);
if (!hHttp)
{
InternetCloseHandle(hNet);
return(FALSE);
}
// Wait until the request is finished...
if (bWait)
{
DWORD dwSize = 0;
char sBuf[1024];
strcpy(sBuf, "");
if (!InternetReadFile(hHttp, sBuf, 1000, &dwSize))
{
InternetCloseHandle(hNet);
return(FALSE);
}
}
// Clean up...
InternetCloseHandle(hNet);
// All done...
return(TRUE);
}
void RemoveTrailingStuff(char *pStr)
{
int len;
len = strlen(pStr);
if(len > 0 && pStr[len-1] == '\n')
{
pStr[len-1] = 0;
}
}
BOOL SendWebInfo(const char* sInfo, BOOL bWait)
{
char site[256];
FILE *fp;
SendWebInfo2(g_sWebRegUrl, sInfo, bWait);
// Ignore sSite and get it from the file.
if(!(fp = fopen("srv_send.txt", "rt")))
return FALSE;
while(fgets(site, sizeof(site), fp))
{
RemoveTrailingStuff(site);
SendWebInfo2(site, sInfo, bWait);
}
fclose(fp);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -