📄 network.cpp
字号:
#include "runner_net.h"
int LUA_TAG_SERVER;
int LUA_TAG_CLIENT;
void IpAddrToStr(char *param_ip_str , int addr)
{
char ip_str[STR_IP_LEN];
char str0[3];
char str1[3];
char str2[3];
char str3[3];
#if(_WINDOWS||_WIN32||WIN32)
itoa((addr>>24)&0xFF ,str3 , 10);
itoa((addr>>16)&0xFF ,str2 , 10);
itoa((addr>>8)&0xFF ,str1 , 10);
itoa( addr&0xFF ,str0 , 10);
#else
gcvt((addr>>24)&0xFF,3 ,str3);
gcvt((addr>>16)&0xFF,3 ,str2);
gcvt((addr>>8)&0xFF ,3 ,str1);
gcvt( addr&0xFF ,3 ,str0);
#endif
strcpy(ip_str,str0);
strcat(ip_str,".");
strcat(ip_str,str1);
strcat(ip_str,".");
strcat(ip_str,str2);
strcat(ip_str,".");
strcat(ip_str,str3);
strcpy(param_ip_str , ip_str);
}
/*
初始化网络
*/
int lua_CreateServer(lua_State *L)
{
if( (lua_gettop(L)==2) && lua_isnumber(L, 1) && lua_isnumber(L , 2) )
{
int iPort = (int)lua_tonumber(L , 1);
int iMaxClientAmount = (int)lua_tonumber(L , 2);
if(iPort < 0 || iMaxClientAmount <= 0)
{
Out("ERR :%s\n" , "Invalid Port or MaxClientAmount");
return 0;
}
CNetServer *pServer ; GetMemoryI(pServer , CNetServer);
pServer->iMaxClient = iMaxClientAmount;
pServer->iPort = iPort;
pServer->SocketSet = SDLNet_AllocSocketSet(iMaxClientAmount + 1);
if(pServer->SocketSet==NULL)
{
Out("ERR : Couldn't create socket set: %s\n" , SDLNet_GetError());
FreeMemory(pServer);
return 0;
}
SDLNet_ResolveHost(&pServer->IpAddr , NULL , iPort);
pServer->tcpSock = SDLNet_TCP_Open(&pServer->IpAddr);
if(pServer->tcpSock==NULL)
{
Out("ERR : Couldn't create server socket: %s\n",SDLNet_GetError());
FreeMemory(pServer);
return 0;
}
SDLNet_TCP_AddSocket(pServer->SocketSet, pServer->tcpSock);
IPaddress tmpAddr;
gethostname(pServer->strMachineName , STR_ID_LEN);
SDLNet_ResolveHost(&tmpAddr , pServer->strMachineName , 0);
IpAddrToStr(pServer->strIP , tmpAddr.host);
printf("Server Created!\n");
printf(" name : %s\n" , pServer->strMachineName);
printf(" ip : %s\n" , pServer->strIP);
printf(" port : %d\n" , pServer->iPort);
printf("-------------------------------------\n");
lua_pushusertag(L , pServer , LUA_TAG_SERVER);
return 1;
}
return 0;
}
// 初始化网络与LUA的接口(tag & functions)
VOID LUAInterface_InitNetwork()
{
LUA_TAG_SERVER = lua_newtag(L_S);
LUA_TAG_CLIENT = lua_newtag(L_S);
lua_register(L_S , "CreateServer" , lua_CreateServer);
}
VOID InitNetwork()
{
if(SDLNet_Init() <0)
{
Out("ERR : Couldn't initialize sdl net: %s\n",SDL_GetError());
return;
}
LUAInterface_InitNetwork();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -