测试工具用着不习惯,楼主自己写个测试类,把需要测试的数据作为参数传进去一般在游戏安装目录,有个目录里有个文件记录着所有区服务器的IP,可能叫serverlist之类的,我没装过CF所以具体在什么位置就不太清楚。里面如果写的是域名不是IP,你在dos窗口ping一下,就知道IP了
检测如下:
网易(杭州)网络有限公司公开专利“外挂检测方法、装置、节点设备、游戏服务器及介质”。企查查内容显示,该专利公开日期为2月19日,当前简单法律状态为“审中”。
资料显示网易游戏通过第一区块链根据游戏服务器发送的游戏 *** 作行为信息,检测待检测玩家是否使用外挂,通过第二区块链存储待检测玩家的外挂使用信息,将处罚结果记录在第二区块链中,保障游戏中防作弊体系惩戒的公正性和透明性。
涉及的方法包括:接收游戏服务器发送的待检测玩家的游戏 *** 作行为信息;根据游戏 *** 作行为信息,对待检测玩家进行外挂检测,得到外挂检测结果。
若待检测玩家使用外挂,向第二区块链发送外挂使用信息,以使得游戏服务器从第二区块链获取外挂使用信息,根据外挂使用信息对待检测玩家执行处罚 *** 作,并将处罚结果记录于第二区块链上。
简介:
网易公司(NASDAQ: NTES),1997年由创始人兼CEO丁磊先生在广州创办,2000年在美国NASDAQ股票交易所挂牌上市,是中国领先的互联网技术公司。
在开发互联网应用、服务及其它技术方面,始终保持中国业界领先地位。本着对中国互联网发展强烈的使命感,缔造美好生活的愿景,网易利用最先进的互联网技术,加强人与人之间信息的交流和共享。
既然你是做游戏测试的,那就用游戏来说吧。一般来说用来玩游戏的那个电脑就是客户端;或者再细点,就是运行游戏的那个程序或者说软件就是客户端。
后台是相对于客户端来说的,就是对游戏进行常规设置、修改、监控及管理的的程序。
服务器就是用以安装、运行后台程序的电脑。由于要安装数据库及处理很多交换数据,它的硬件配置和 *** 作系统一般与日常使用电脑系统的有些区别。一般来说,如果不打算在服务器上运行客户端的话,该机器对显卡是不做要求的,但对CPU、内存、硬盘的要求比普通电脑高的多。
对于你来说,如果做的是单机游戏测试,那么无所谓服务器、后台之说。如果是测试网络游戏,多人测试的话是一定要配个服务器的,如果人不多,用个稍微好点的电脑就可以了,否则就要单买一台服务器了;如果是单人测试。那就把后台和客户端都装一台电脑上就好,机器配置稍微高点就行。
粘包和分包是利用Socket在TCP协议下内部的优化机制。
1、什么是粘包
只有TCP有粘包现象,UDP永远不会粘包,为何,且听我娓娓道来。发送数据时间间隔很短,数据了很小,也就是发送数据比较频繁,会合到一起,产生粘包;
2、什么是分包
当我们发送的数据量很大的时候,可能是几千字节,TCP就会自动分开发送,其实说通俗点,就是你去拿快递,一看20个,一次拿不完,分几次拿!
3、总结
指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。
发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。
若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。
这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据,这样就一次取到了多包数据。分包是指在出现粘包的时候我们的接收方要进行分包处理。
在前面的测试程序中,是没有粘包问题的,这时候你可能有疑惑,我为啥数据会发送的特别快,我们以游戏服务器举例,比如游戏有联机对战功能,这时候肯定是需要同步位置信息的,这个频率是很快的,大约每秒就要40~80次,这个时候就会出现粘包问题。
其实很简单只要简单修改一下客户端即可。
1、程序测试 — 粘包问题
客户端:
服务器查看调试信息:
服务器已启动
有一个客户端进行连接成功
从客户端接收到的数据:0
从客户端接收到的数据:123
从客户端接收到的数据:4567
从客户端接收到的数据:8910
从客户端接收到的数据:1112131415
从客户端接收到的数据:161718
从客户端接收到的数据:192021222324
从客户端接收到的数据:25262728
从客户端接收到的数据:2930313233
从客户端接收到的数据:34353637
从客户端接收到的数据:38394041
从客户端接收到的数据:42434445
从客户端接收到的数据:46474849
从客户端接收到的数据:50515253
从客户端接收到的数据:5455565758
从客户端接收到的数据:59606162636465666768
从客户端接收到的数据:6970717273
从客户端接收到的数据:74757677
从客户端接收到的数据:78798081
从客户端接收到的数据:82838485
从客户端接收到的数据:86878889
从客户端接收到的数据:90919293
从客户端接收到的数据:9495969798
从客户端接收到的数据:99
(很明显数据没有发送100次)
1、程序测试 — 粘包问题
客户端:
服务器查看调试信息:
服务器已启动
有一个客户端进行连接成功
从客户端接收到的数据:
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000撒大声地所多所多所多所多所多所多所多所多所多所000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000撒大声地所多所多所多所多所多所多所多所多所多所多所多所多所多所多撒大声地所 多所多所多所多所多所多所多所多所多所多所多所多所多所多撒大声地所多所多所多所多所多所多所多所多所多所多所多所多所多所多000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000----------------------------------------------------------------撒大声地所多所多所多所多所多所多所多所多所
从客户端接收到的数据:
77777777777777777777777777777777777777777777777777777777790909090909090909090909090909090909090000000000000000000000000099
(可以看出服务器是分两次接收的,但其实只要static byte[] dataBuffer = new byte[1024];给的空间足够大,分包问题就可解决)
其实也很好解决,我们在发送数据的时候事先存储数据的长度,不过用来存储数据长度的内存大小需要指定好,否则就没法判断了。
假设我们现在的数据出现了粘包,如下图所示:
这里只是演示一下,如果只有连续发送4次数据,一般是不会出现粘包的,看上图橙色部分表示我们用一个int32类型储存数据的长度,蓝色部分为我们实际要发送的数据,现在发生了粘包,也就是这四条数据合在一起发送给了服务器,
此时这条数据的总大小为 4字节 4 + 5 + 7 + 10 + 4 = 42字节
我们通过读取4字节数据可以知道数据的实际长度,以第一个数据为例,我们读取4字节数据,知道了这个数据有5个字节,程序如下:
int data_length = BitConverterToInt32(_data, 0);
此时的data_length = 5;此时我们就读取这5个字节的数据即可!
string s = EncodingUTF8GetString(_data, 4, 5);
然后我们截取数据,从源数据的第4 + 5的位置开始截取到一个新数组,新字节数组索引从零开始,此时新字节数据的长度为42 - (5 + 4);(下图为新字节数组)
ArrayCopy(_data, 5 + 4, _data, 0, 42 - (5 + 4));
依次循环下去,粘包就被成功的分包了。当然这个不要忘记每次更新一下当前数据长度。
_curLength = _curLength - (data_length + 4); // _curLength = 42 - (5 + 4)
1、客户端
创建Message类,用于发送数据前做处理,使得首4字节储存数据长度。
Message:
Main:
2、服务端
创建Message类,解决粘包问题!
Main:
服务器查看调试信息:
服务器已启动
有一个客户端进行连接成功
解析到一条数据:0米
4
8
解析到一条数据:1米
4
630
解析到一条数据:2米
4
622
解析到一条数据:3米
4
614
解析到一条数据:4米
4
606
解析到一条数据:5米
4
598
解析到一条数据:6米
4
590
解析到一条数据:7米
4
582
解析到一条数据:8米
4
574
解析到一条数据:9米
4
566
解析到一条数据:10米
5
558
解析到一条数据:98米
5
18
解析到一条数据:99米
5
9
有客户端退出
你解决个屁,异步接收的情况下,把_data数组调大点就完了,傻逼,咱们是做游戏!一般不会有分包问题!!
大区服务器的IP地址你都可以在自己电脑街头篮球游戏文件夹中的Config文件里看到,用记事本打开他就行了,注意测出的只是你与服务器的理论PING值,实际会稍高。
PING值在10~40MS-适合玩任何职位。
PING值在41~60MS-不太适合抢蓝板。
PING值在61~70MS-不太适合玩3V3,可以玩2V2或者1V1。
PING值在 ≥71MS -建议换个时段,再上游戏。
面告诉大家如何用PING的命令来测出在游戏中自己的网速!
第一步:WIN桌面--开始--运行--在运行中输入:CMD--回车
第二步:输入:PING+游戏服务器IP --回车
例如:想要测试自己在2区的网速则在第二步时输入: PING 218857154
然后回车。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)