我正在创建一个2DMinecraft风格的游戏,其中map存储在一个二维int数组中。您可以放置和销毁方block,AI控制的角色将在map上四处走动。该游戏是使用xna/c#制作的。问题是我没有太多编码网络游戏的经验。我应该使用哪个协议(protocol)?UDP、TCP?或者林格伦图书馆?(使用UDP+可靠性)我应该让以下事情在客户端、服务器或两者上完成吗?人工智能/寻路碰撞检测此外,向服务器发送销毁和放置block消息是好的做法吗?我猜客户端启动时,首先需要下载map。然后对map的更改将与客户端和服务器上的map并行进行...最后,我是应该只在字符位置发生变化时才广播它们(
我想知道是否有一种方法可以使用DPDK在用户空间建立TCP连接而无需从内存中复制数据包?我对此很陌生,我不知道从哪里开始,任何关于如何开始的建议都会有所帮助。我尝试使用谷歌搜索一些提示,或者如果有人问过,但我找不到很多资源。 最佳答案 DPDK是一组用于快速数据包处理的库和驱动程序。它没有开箱即用的TCP/IP堆栈。因此,要建立TCP连接,您需要在DPDK之上使用TCP/IP堆栈。栈有很多种,例如:F-Stackhttp://www.f-stack.org/顶级域名https://wiki.fd.io/view/TLDK还有很多
我们都知道TCP是一种流式传输协议(protocol)。与UDP不同,UDP保证整个客户端消息将作为单个数据报传送到服务器(我们谈论的是传输层,所以现在避免使用MTU),TCP可以分段一个“消息”(数据是传递给send函数)分成几个较小的数据包,因此我们必须使用我们自己的定界符作为消息的边界。问题是——TCP如何选择应该对哪些数据进行分段以及按多大大小进行分段?它使用任何通用/标准方法吗? 最佳答案 TCP使用一个名为MaximumSegmentSize的参数:Themaximumsegmentsize(MSS)isaparamet
我正在为我的兄弟开发一款可在网络上运行的迷你口袋妖怪游戏。不幸的是,在测试时我发现由于某种原因,它仅在尝试将字符串发送到另一台计算机的行上给出有关“错误文件名或编号”的错误,但在循环接收命令时没有错误。这是我的代码:SCREEN12CLSPRINT""PRINT""PRINT""PRINT""PRINT""PRINT"POKELITE-ByMark"PRINT""PRINT""INPUT"JoinorHostagame?",hostorjoin$hostorjoin$=UCASE$(hostorjoin$)IFhostorjoin$="JOIN"THENGOTOJOINIFhostor
我们正在使用OpenLDAP客户端库连接到LDAP服务器。问题是如果一段时间没有事件,服务器(或中间的防火墙)会断开TCP连接。我们当前的“keep-alive”实现只是不时地搜索baseDN-有更好的想法吗? 最佳答案 LDAP放弃可能有效:if(ldap_abandon(ld,0,sctrls,cctrls)!=LDAP_SUCCESS){/*handleldaperror*/};OpenLDAP邮件列表上对此进行了讨论:http://www.openldap.org/lists/openldap-devel/200905/ms
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭去年。Improvethisquestion有哪些优秀的网络程序员博客?我对撰写多人游戏(MMORPG/RTS/FPS/等)的人特别感兴趣,但任何关于该主题的写得很好的博客都会很棒。这是我在另一个stackoverflow帖子上找到的一个很好的博客:GlennFiedler'sNetworkingforGameProgrammersGamasutraBlogs偶尔有文章涉及网络编程PS:我对阅读任何东西都很感兴趣
有一个数据馈送服务器通过UDP接收来自各种客户端的馈送,因为客户端抽取数据的速度非常快,如果服务器花时间处理接收到的数据,接收缓冲区很容易变满,所以如果feed服务器有帮助只是多播它收到的所有数据到LAN上的其他服务器数据馈送服务器有第二个网卡连接到?其他每一个服务器只接收数据担心处理和离开其他数据到其他服务器。如果传入数据仍然到达太快了,有什么攻略确保不会丢失任何数据?谢谢。 最佳答案 一些可以尝试的策略包括确保接收进程在接收线程中做很少的事情,只需读取数据并将其发送到内部队列以供另一个线程处理-这应该会减少接收缓冲区填满的可能性
当源不知道远程机器的地址时,目标mac地址字段包含什么?(比如从我的机器打开来自google.com的页面)在广播数据包时,mac-address字段包含什么? 最佳答案 目标MAC地址始终是到达目标的下一跳地址。对于像google.com这样的目的地,它很可能是与您计算机上的默认路由关联的网关的MAC。对于广播数据包,使用特殊的“所有站”MAC地址:ff:ff:ff:ff:ff:ff。 关于networking-当源不知道远程机器的地址时,目标mac地址字段包含什么,我们在StackO
使用stun我将获得我的外部ip/端口和NAT类型。在我的中间服务器(公共(public)ip)上,我将注册对等点的外部ip/端口(现在服务器知道对等点1和2的外部ip/端口)。交换ip/端口(对等点1将了解对等点2的ip/端口)。同时从两个对等点调用connect()。这是正确的流程吗? 最佳答案 您的算法对于UDP是正确的。查看这些帖子以获取更多信息:TCPHolePunch(NATTraversal)Libraryorsomething?UDPHolePunchingTCPHolePunching
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我想从IP地址读取网络掩码、网络和广播地址。基本上我对网络掩码、CIDR、网络和Broadcat术语感到困惑,任何人都可以帮助我理解这些术语。谢谢,汤姆曼