网络多人游戏架构与编程2
摘要:【网络多人游戏架构与编程2】 1.0、虚拟现实游戏是对延迟最敏感的, 因为我们人类只要头旋转了,眼睛就期望看到不同的事物。在这些情况下,保证用户感觉在虚拟现实世界中就要求延迟少于 20 毫秒。 格斗游戏、 第一人称射击游戏和其他动作频繁的游戏是对延迟第二敏感的。 这些游戏的延迟范围可以从16 毫秒到
阅读全文
网络多人游戏架构与编程1
摘要:【网络多人游戏架构与编程1】 1、即使在今天,大多数的多人在线游戏在每个游戏会话中仍然限制玩家的数量 ,一般支持4~32个玩家。然而,在大规模多人在线游戏(massive multiplayer online gmme,MMO)中,成百上千的玩家将同时出现在同一个游戏会话中。 2、《星际围攻:部落》
阅读全文
状态同步
摘要:【状态同步】 1、将所有的操作发送给Server(T1),由Server计算(T2),并返回结果(T3)。 权威服务器架构能够防止很多的作弊,但是直接用这种方法会让游戏的响应变得迟缓。 如果 T1 + T2 + T3 非常大,则游戏体验会非常差。比如,Client_1开了一枪,1000ms 后才收到
阅读全文
网络同步
摘要:【网络同步】 1、UDP包大小限制 。 运营过程中,发现有部分玩家,经常出现游戏不一致异常结束。日志中发现,玩家的Frame包校验码不正确,就是说这个包是错的。这怎么可能呢?网上都说UDP保证包数据的正确,看来也不尽然。 后来咨询了各种资料,总结出问题: 是数据报太大,被分组,部分路由器组包错误。(
阅读全文
帧同步
摘要:【帧同步】 1、RTS游戏有很多,比如我们都玩过的的Warcraft III(大家耳熟能详的Dota是它的一张地图)和StarCraft,还有EA的代表作命令与征服系列(Command & Conquer)等等,以及现在非常流行的Dota2和LOL。 早期广泛在RTS(即时策略)游戏中应用的同步机制
阅读全文
使用ddns搭建免费服务器
摘要:【使用ddns搭建免费服务器】 第一步 tplink路由器提供了ddns服务,它为用户免费提供一个子tpddns.cn下的子域名,映射到你的路由器上。当启用后,只在要能接入互联网的地方,都能过此域名,将请求发送到路由器上。 所以,第一步解决了,外网访问路由器的问题。 第二步 tplink路由器还提供
阅读全文
DDNS
摘要:【DDNS】 DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。 DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并
阅读全文
Ping of Death
摘要:【Ping of Death】 The ping of death attack, or PoD, can cripple a network based on a flaw in the TCP/IP system. The maximum size for a packet is 65,535
阅读全文
ICMP Protocol
摘要:【ICMP Protocol】 参考: 1、ICMP Types and Codes:http://www.nthelp.com/icmp.html 2、RFC 792 - Internet Control Message Protocol:http://www.faqs.org/rfcs/rfc7
阅读全文
NetBIOS发包
摘要:【NetBIOS发包】 1、拥有 LANA、Local Session Num即可发包。 ncb_lsn,session号。指定发向哪。 ncb_lana_num,lan-adapter号,指定用哪一个adapter的哪一个协议进行发包。 2、获取 LAN Session NUm。 ncb_lsn
阅读全文
NetBios 的结构体详解
摘要:【NetBios 的结构体详解】 NetBIOS是早期的局域网传输协议。 1、结构体。 2、命令 NetBIOS命令的使用方式有两种,即等待和非等待(或称为同步与异步)方式。 如果命令码的高阶位是0时是等待方式,命令将阻止提交命令的应用程序继续执行,直到该NetBIOS命令执行完毕后才允许这个应用程
阅读全文
TCP_NODELAY
摘要:【TCP_NODELAY】 TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年...
阅读全文
CompletionPort
摘要:【CompletionPort】1、CreateIoCompletionPort。此方法用于创建与绑定。此方法调用后,socket即退出,只能通过CompletionKey来辨认是哪个socket的消息。 CompletionKey是自定义数据,用于区分FileHandle。 NumberO...
阅读全文
WSAEvent
摘要:【WSAEvent】1、WSACreateEvent。创建WSA事件。2、WSAEventSelect。 lNetworkEvents[in] A bitmask that specifies the combination of FD_XXX network events in which...
阅读全文
SO_KEEPALIVE选项
摘要:【SO_KEEPALIVE选项】 对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1、连接正常关闭,调用close() shutdown()连接优雅关闭,send与recv立马返回错误,select返回SOCK_ERR; 2、连接的对端异常...
阅读全文
SO_LINGER
摘要:【SO_LINGER】 在默认情况下,当调用close关闭socket的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回. SO_LINGER选项则是用来修改这种默认操作的.于SO_LINGER相关...
阅读全文
shutdown和close的区别
摘要:【shutdown和close的区别】 当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd); 你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个...
阅读全文
TIME_WAIT和CLOSE_WAIT状态区别
摘要:【TIME_WAIT和CLOSE_WAIT状态区别】 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于...
阅读全文
什么是2MSL
摘要:【什么是2MSL】 MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼...
阅读全文
POP3&SMTP&IMAP
摘要:【POP3&SMTP&IMAP】IMAP是什么? IMAP,即InternetMessageAccessProtocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMA
阅读全文