网络传输大体上包含这四个协议type area command message,这四层协议是依次向下传递的。
所谓协议,说简单点就是服务器端和客户端的一个约定,
比如,向服务器发送(1,0,1,“账号:*** 密码***”)
约定type中1代表登录模块,因为登陆不需要经过area协议,所以跳过area协议,直接到command协议,
command中1代表登陆,2代表注册,3代表返回登陆结果,传入的是1,故进行登陆逻辑,注意,如果type不是1,此处1,2,3就会代表别的东西了。
如果登陆成功,服务器会返回(1,0,3,“true”)
如果不嫌麻烦,完全可以只定义一个协议,但是估计没人那么做
在传输过程中,为了进行高效的传输,所有的数据都会连在一起,如果传的是int a = 1 string b = “qaz”传输时会变成1qaz
为了进行区分,通常会在传输数据体前用一个8字节的int传入这个数据体的长度(一般一个int就占8个字节),这个int通常叫做数据头
如果想传的数据占256个字节,那么传的时候会发送256+8个字节
如果想发送一个float和一个bool,那么真正发送的会是连在一起的int float int bool
下面说下如何进行解析
在连接服务器后,用BeginReceive进行数据接收,其中一个参数定义了缓存大小
建立一个字节数组byte[1024]来作为缓存
建立一个ByteArray来存储待处理数据&#
所谓协议,说简单点就是服务器端和客户端的一个约定,
比如,向服务器发送(1,0,1,“账号:*** 密码***”)
约定type中1代表登录模块,因为登陆不需要经过area协议,所以跳过area协议,直接到command协议,
command中1代表登陆,2代表注册,3代表返回登陆结果,传入的是1,故进行登陆逻辑,注意,如果type不是1,此处1,2,3就会代表别的东西了。
如果登陆成功,服务器会返回(1,0,3,“true”)
如果不嫌麻烦,完全可以只定义一个协议,但是估计没人那么做
在传输过程中,为了进行高效的传输,所有的数据都会连在一起,如果传的是int a = 1 string b = “qaz”传输时会变成1qaz
为了进行区分,通常会在传输数据体前用一个8字节的int传入这个数据体的长度(一般一个int就占8个字节),这个int通常叫做数据头
如果想传的数据占256个字节,那么传的时候会发送256+8个字节
如果想发送一个float和一个bool,那么真正发送的会是连在一起的int float int bool
下面说下如何进行解析
在连接服务器后,用BeginReceive进行数据接收,其中一个参数定义了缓存大小
建立一个字节数组byte[1024]来作为缓存
建立一个ByteArray来存储待处理数据&#