我遇到了一个以前从未听说过的问题。我正在制作一个在特定角色Action中使用UDP数据包的在线游戏。在我开发了udp模块之后,它似乎工作正常。虽然我们的大多数团队成员都没有问题,但是我的老板告诉我那个模块有问题。我调查了这个问题,最后我发现...在他的PC上,如果udp数据包大小小于12,则数据包永远不会传送到其他主机。以下是一些附加信息:1~11字节的udp数据包被丢弃,12字节和超过12字节的数据包都可以。操作系统:MicrosoftWindowsVistaBusinessNIC:AttansicL1千兆以太网10/100/1000Base-TControllerWSASendTo
是否有任何网络协议(protocol)不是严格意义上的TCP或UDP,但可以与其中任何一个一起使用?例如,HTTP、FTP、STMP、RTMP始终是TCP。DNS、SNMP、DHCP、RIP始终是UDP。有什么既可以是TCP也可以是UDP的东西吗?还是我的上述断言有误?RTSP是我所知道的一个奇怪的东西,它同时使用TCP和UDP来控制音频/视频/质量,但它对每个发送的内容都有严格的要求。我问的是标准的、已发布的或至少是常用的协议(protocol),而不是自定义协议(protocol)。 最佳答案 DNS可以使用UDP或TCP;当响
我们正在开发一款游戏,数百万客户端与我们的服务器进行通信。这些游戏大部分是回合制的。我知道UDP提供了一些优于TCP的性能优势,但我想知道一种协议(protocol)是否比另一种协议(protocol)具有安全优势?我读过一些网站表明TCP通常会更安全,但我也见过大量利用TCP弱点的攻击。我们的代码能够很好地容忍不可靠的连接和丢失/乱序的数据,这就是我想到UDP的原因。谢谢! 最佳答案 UDP最大的安全问题是您容易受到spoofing的影响。和DOSattacks.由于握手永远不会完成,因此不可能使用TCP在Internet上欺骗地
许多游戏开发者选择在应用程序级别中制作UDP可靠。TCP不正是为此而生的吗?我制作了一个API,可以使用UDP和TCP数据包启用客户端-服务器通信。我应该将ReliableUDP添加到列表中吗?为什么?如果我使用TCP会有问题吗?我只是想知道RUDP是否比TCP有任何优势,以便我可以选择是否添加RUDP支持。 最佳答案 简短回答:TCP没有针对延迟进行优化(根本没有);结果-它有几个属性,这些属性是游戏的延迟killer(尽管它们只有在数据包丢失时才会发挥作用)。特别是,线头阻塞和指数退避对于快节奏游戏来说往往非常烦人。对延迟影响最
是否可以判断googletalk是使用tcp还是udp包进行传输。我知道它在应用层使用xmpp协议(protocol),但它是通过tcp还是udp运行的。 最佳答案 您可以通过使用数据包嗅探器观察流量来自己回答这个问题。这比让我们告诉您答案更有启发性。 关于networking-googletalk使用udp还是tcp数据包?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/162
如何让Haskell在同一个端口上监听UDP和TCP?这是我目前的代码(基于acme-http):listenOnportm=doprotoTCPdosetSocketOptionsockReuseAddr1setSocketOptionsockNoDelay1bindSocketsock(SockAddrInet(fromIntegralportm)iNADDR_ANY)listensock(max1024maxListenQueue)returnsock)protoUDPdosetSocketOptionsockReuseAddr1bindSocketsock(SockAddrIn
我昨天正在配置IPtable。我的同事刚问了我这个问题,我无法回答。我意识到我是一个比系统管理员更好的开发人员,并且需要改进这一点。那么它们是什么?他们有什么用?缺点/优点(如果相关)。 最佳答案 这些都是基本问题。UDP::用户数据报协议(protocol)1)机器之间没有端到端连接(可能在本地网络或互联网中的某个地方)。2)接收端接收到的数据不是像TCP那样是流式的,而是一个完整的数据block。3)在传输层不执行数据包顺序检查。也就是说,如果接收到的数据包出现任何错误,接收方将不会要求向发送方重新发送相同的数据包。4)由于上述
我无法理解recv()/recvfrom()从非阻塞UDP套接字返回的内容。与TCP相比更具体一些(如果我错了请纠正我):在缓冲区中有一些数据之前,阻塞套接字(TCP或UDP)不会从recv()返回。这可能是一些字节数(TCP)或完整的数据报(UDP)。非阻塞TCP套接字返回EWOULDBLOCK(linux)/WSAEWOULDBLOCK(windows)或当前缓冲区中的字节。由于TCP数据是一个流,因此返回多少字节并不重要。现在问题:如果没有可用数据,非阻塞UDP套接字也会返回WOULDBLOCK(linux)/WSAEWOULDBLOCK(windows)。但是,如果有数据可用,
我们有一个系统(用C语言构建)可以通过UDP进行通信。最近我们发现有必要保证数据包的传递。我的问题是:要确保使用ack数据包进行交付,对基于UDP的系统的最少添加是什么?此外,理想情况下无需操作数据包header。我们对数据包进行应用程序级别的控制,包括序列号和ack/nack标志。我想知道这是否是一个失败的原因,我们尝试做的任何事情基本上都是有缺陷和损坏的TCP版本。基本上,我们是否可以进行最低限度的改进来实现有保证的交付(我们不需要TCP的许多功能,例如拥塞控制等)。谢谢! 最佳答案 TCP交织了3个可能相关的服务(好吧,TCP
速度、优化和可伸缩性是Udp和Tcp协议(protocol)之间的典型比较。Tcp吹捧可靠性,缺点是有一点额外的开销,但速度非常好。一旦Tcp套接字被实例化,保持套接字打开需要一些开销。但与经常描述的Udp负担相比,究竟哪个协议(protocol)的开销更大?我还听说Tcp存在可伸缩性问题……但是互联网(网页/服务器)在Tcp上运行-那么Tcp是什么抑制了可伸缩性?好的...所以Udp不需要保持连接打开的开销。但是,它需要您编写额外的方法来确保所有数据包都到达那里,希望按照您希望的顺序接收。如果没有收到完整的数据包,则必须告诉客户端或服务器重新发送。并且您还必须为部分数据包保留某种消息