客户端宕机致命问题

1、不要依赖外部数据,如果要用外部数据,要有足够的校验,并注意外部数据的完整性和正确性
2、主线程不要有网络、IO同步操作,大量耗时操作要用异步
3、IP获取,直接从登陆服应该可以取到
4、客户端的稳定性也要有足够的重视
5、sprintf_s 是不安全的,慎用
建议用下面的API
RKT_API char* sstrcpyn(char* dest, const char* src, size_t destSize);
RKT_API int ssprintf_s(char* string, size_t sizeInBytes, const char* format, ...);

6、base里面的API多了解一下


这段代码的问题很多

大量访问导致138服务器崩溃,至于游戏客户端大量奔溃。

unsigned int GetLocalIpAddress()
{
	char buf[MAX_PATH] = {0};    //把网页中读出的数据放在此处
	char chTempIp[128] = {0};
	char chIP[64] = {0};        //最终存放IP在此
	//将网页数据写入c:\i.ini文件中
	URLDownloadToFile(0, "http://iframe.ip138.com/ic.asp", "i.ini", 0, NULL);
	FILE *fp = fopen("i.ini", "r");
	if (fp != NULL)
	{
		fseek(fp, 0, SEEK_SET);
		fread(buf, 1, MAX_PATH, fp);
		fclose(fp);
		//在buf中查找 [ 的位置, iIndex是buf中从[开始剩下的字符串,包括[这个字符串
		char* iIndex = strstr(buf, "[");
		if (iIndex)
		{
			sprintf(chTempIp, "%s", iIndex);
			int nBuflen = strlen(chTempIp);
			for (int i = 0; i < nBuflen; i++)
			{
				chIP[i] = chTempIp[i+1];
				//如果发现有 ] 则截断
				if (chTempIp[i] == ']')
				{
					chIP[i-1] = '\0';
				}
			}
		}
	}
	remove("i.ini");
	return  htonl(inet_addr(chIP));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值