网络同步
蹦蹦跳跳小米粒
努力奋斗的游戏coder
展开
-
网络玄学问题:单步调试状态与非调试状态程序结果不一致
这两天工作中遇到一个调试问题,就是在当我的客户端连接一个错误的ip地址的服务器的时候,会出现单步调试的结果和直接快速运行的程序结果输出不一样的情况,当单步调试的时候可以按照希望的逻辑走到应该报错的地方,但是当程序直接运行,没有下断点的时候,就会走显示网络没有问题的逻辑。经过一段时间的分析探讨,我发现问题的原因在于,我们的网络是异步的,当连接命令交给底层的网络模块后,网络内部的逻辑会去执行它自己的逻...原创 2019-10-21 10:55:03 · 820 阅读 · 0 评论 -
帧同步与状态同步
最近在做的游戏中要用到网络同步的相关知识,因此针对帧同步与状态同步中查询了一些资料,并且涉及了TCP和UDP在游戏网络同步中的一些优缺点的整理,在这里记录一下帧同步与状态同步帧同步:服务器负责转化客户端的操作,每个客户端在固定的逻辑帧执行该帧所有客户端的操作命令,通过严格一直的时间轴上执行同样的命令。优点:可以无视客户端服务器,开发方便打击感反馈好网络流量小缺点:网络要...原创 2019-06-05 00:01:04 · 1338 阅读 · 0 评论 -
LiteNetLib使用记录与使用心得
最近在做的游戏中涉及到了网络同步,尽管同步比较简单,仅仅有两个玩家同步,但是对于我这种第一次写网络同步的小白来说也是全新的一块东西啦。一开始我是用的Unity中自带的Network类,这里参考了https://blog.csdn.net/sumkee911/article/details/54908292这一篇文章,在网络多线程这一块写的感觉真的很不错了,可是在中期答辩的时候被助教指出TCP网络在...原创 2019-06-05 00:34:34 · 5799 阅读 · 3 评论 -
Tcp与Udp协议总结
Tcp协议常见知识1. Tcp是面向链接的运输层协议,在应用程序使用TCP协议之前,必须先简历TCP连接,传输完毕后,需要断开TCP连接。2. 每一条TCP连接只有两个端点,每一条TCP连接是点对点的。3. TCO提供可靠的服务,在使用TCP连接传送数据时,无差错,不丢包,不重复,按序到达。4. TCP提供全双工通讯,TCP允许通信双方的应用进程在任何时候都可以发送数据,并且在两端...原创 2019-07-13 00:17:15 · 213 阅读 · 0 评论 -
HTTP协议知识总结
HTTP协议指的是超文本传输协议,其建立在运输层TCP协议的基础上,利用互联网来进行传输超文本的一个应用层协议。HTTP与HTTPS的区别http与https均属于应用层协议,其中HTTPS协议经过了TLS和SSL加密,他们的不同点是:1. HTTPS协议发送的内容是经过加密后的内容,而HTTP发送的是明文2. HTTPS使用的是443端口,HTTP协议使用的是80端口3. H...转载 2019-07-13 13:38:52 · 105 阅读 · 0 评论 -
网络层与IP协议知识点整理
IP协议是网络层使用的协议,与之相关的协议还有ARP协议、ICMP协议、IGMP协议。网络层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。IP地址分类与特点:A类地址范围:1.0.0.0~126.255.255.255A类地址网络号字段占据一个字节,只有7位可以使用,可指派的网络号是126(2^7-2)个。减2的原因是:IP地址网络段全为0表示this,意思是本网络;...转载 2019-07-13 14:11:13 · 353 阅读 · 0 评论 -
网络同步与异步概念整理
在网络同步中,有两种同步方式,分别为同步与异步。同步的操作指的是,当所有的操作请求都做完,才将结果返回给用户,用户才能进行下一个操作,这样就会让用户有一种卡顿的感觉,因为需要等待上一步操作的执行结果。异步操作指的是,用户的操作之间不需要进行等待,而是在服务端设置一个消息队列,保存用户的每一步的操作,因此用户不会有卡顿的感觉。大部分网络同步为了照顾用户体验都需要使用异步操作,但是同步操作...原创 2019-07-10 15:05:41 · 3502 阅读 · 0 评论 -
日常练习知识总结(一)
1.合并分E-R图各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。子系统E-R图之间的冲突主要有三类:①属性冲突②命名冲突③结构冲突①属性冲突属性域冲突,即属性值的类型、取值范围或取值集合不同。例如零件号,有的部门把它定义为整数,有的部门把它定义为字符型。年龄,某些部门以出生日期形式表示职工的年龄,而另一些部门用整数表示职工的年龄...原创 2019-07-19 23:49:13 · 396 阅读 · 0 评论 -
Socket编程bind错误码98 EADDRINUSE 处理方法
出现这样的错误可能有两个原因,第一是因为当前主机已经有服务器进程在调用bind和listen在监听我们的目标端口,如果我们在这时再次调用bind函数进行绑定的话,则会产生系统调用错误。第二个原因可能是因为我们所需要bind的目标端口是本机socket已经连接的端口。解决方法:设置套接字SO_REUSEADDR,所有的TCP服务器都应当指定该选项。指定方法: int flag = 1;...原创 2019-10-10 14:59:45 · 8320 阅读 · 0 评论