草庐IT

tcp - udp单播比tcp快吗?

我需要每秒将1000个小对象从服务器程序推送到千兆局域网上的100个客户端,所以我需要最快的方法,谢谢。我知道usp和TCP之间的区别-我在udp之上有一个层以使其可靠和有序。我应该使用哪个,为什么?Udp单播或TCP。由于路由器原因,我无法使用Udp多播。谢谢 最佳答案 客户端之间可以相互通信吗?最终,您的服务器只有有限数量的电线,这限制了您的速度。让客户端完成一些分发工作可以为您提供更多线路,因此比任何协议(protocol)更改都可以使您的速度成倍增加。TCP本质上是具有可靠性层的UDP-正是您所拥有的。然而,TCP是在硬件中

tcp - 我应该使用 TCP 还是 UDP?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我的应用程序需要将视频数据从服务器逐帧发送到客户端。我在使用TCP还是UDP之间犹豫不决。从我的测试中,我发现了以下一些结果:TCP:非常容易实现。UDP:要向客户端发送一个帧(大约50KB),如果我为每个帧创建1个UDP包,那么发送总是丢失帧。所以我必须把每一帧分成很多UDP包。这使我的算法更加复杂,因为UDP协议(protocol)可能会丢失包,并且包可能会乱序传送。此外,如果每个UDP包中的数据长度

Python Socket 编程(TCP 与 UDP)

我打算设计一个从多个客户端接收数据的服务器,服务器不需要将任何东西发送回客户端,虽然STATUS_OK仍然很酷但不是必需的。我知道Python套接字模块、扭曲框架的基础知识,但我的问题是,我应该使用UDP还是TCP?需要保持连接的客户端。我希望你们能理解我的问题,谢谢你们在这里的精彩帮助 最佳答案 在遇到可以使用UDP缓解的性能问题之前,您应该始终使用TCP。TCP失败时更容易理解。 关于PythonSocket编程(TCP与UDP),我们在StackOverflow上找到一个类似的问题

c++ - p2p 开源库 tcp/udp 组播支持

我的计算机上正在运行某个应用程序。同一应用程序可以在局域网或世界不同地方的多台计算机上运行。我想在他们之间进行交流。所以我基本上想要一个p2p系统。但我将永远知道哪些计算机(特定IP地址)将是对等方。我只希望同龄人具有加入和离开功能。最重要的一个目标是通信速度和所需时间。我假设对等点之间的简单UDP多播(如果存在类似的东西)将是最快的解决方案。即使丢失,我也不想重新传输消息。我应该使用现有的p2p库吗?libjingle等或者只是从头开始创建一些基本框架,因为我的需求非常基本? 最佳答案 我认为您忽略了UDP的要点。从某种意义上说,

c# - WAN 上的 TCP 和 UDP 套接字服务器

我正在尝试创建一个同时使用TCP和UDP的服务器和客户端。服务器在LAN设置中运行良好,但在通过WAN传输时未收到UDP消息。我相信这是因为用于发送数据的UDP套接字在NAT表中的保留时间不足以返回任何信息。有没有办法让UDP端口在路由器中保持打开状态(没有端口转发)或使用与已连接的TCP连接相同的UDP端口?提前致谢。 最佳答案 如果您没有获得任何流量,它可能只是被防火墙阻止了。在这种情况下它不是关于转发,而是关于打开端口。大多数(如果不是全部)NAT/防火墙设备在NAT被打穿一个洞后将允许双向的UDP流量。也就是说,如果我的笔记

tcp - 为什么TCP/UDP checksum最后补齐了?

在TCP/UDP中,发送方对16位字进行异或运算,最后的结果再次补码得到校验和。现在,这样做是为了使接收方可以使用数据和校验和重新计算校验和,如果结果都是1,则可以确定(好吧,几乎!)没有错误。我的问题是为什么我们必须在发件人处对结果进行最终补充。我们不妨这样发送它,以便当接收方重新计算校验和时,它必须检查所有零,而不是像其他情况那样检查所有零。 最佳答案 因为0有特殊的意义。它用于指示要忽略校验和计算。 关于tcp-为什么TCP/UDPchecksum最后补齐了?,我们在StackOv

python - 使用 select() 监听 tcp 和 udp 消息

我只在尝试这段代码时收到TCP消息:fromsocketimport*fromselectimportselectdefread_tcp(s):whileTrue:client,addr=s.accept()data=client.recv(8000)client.close()print"RecvTCP:'%s'"%datadefread_udp(s):whileTrue:data,addr=s.recvfrom(8000)print"RecvUDP:'%s'"%datadefrun():host=''port=8888size=8000backlog=5#createtcpsock

c++ - 了解 TCP 数据包大小限制和 UDP 数据包大小限制及其在 boost::asio 编程级别的含义

我正在使用boost::asio在我的客户端应用程序和服务器应用程序中执行UDP以及TCP通信。我发现我只能使用UDP传输大小为65535字节的数据,因为它似乎是UDP中的最大数据包大小。TCP中也有最大数据包大小限制,即65535字节?但是我可以在TCP中使用boost::asio::write发送大于最大数据包大小的block,并在客户端应用程序上读取它。我看到我不必担心TCP中的最大数据包大小,但在UDP中我确保每个socket.send_to都使用小于maxpacketsize的缓冲区完成>这是如何工作的?这是因为TCP是基于流的,负责在较低层创建数据包吗?有什么方法可以增加U

sockets - 为什么 UDP 服务器中只有一个套接字?

我正在备考,发现了这个问题:AtypicalUDPservercanbeimplementedusingasinglesocket.Explainwhy,foraTCPdrivenserver,Ifindthattwosocketsarecreated-onewhereallclientsapproachtheserver,andonespecific(socket)foreachclientforfurthercommunicationbetweentheserverandclient.这是(在我的理解中)由并发问题驱动的(希望不要在联系点地址上与单个客户端进行过多通信)。我知道UD

c# - 要每 50 毫秒发送一次图像,我应该使用 TCP 还是 UDP?

我正在构建一个C#应用程序,使用服务器-客户端模型,其中服务器每50毫秒通过一个套接字向客户端发送一个图像(100kb)...我使用的是TCP,但除了该协议(protocol)的开销之外,有时客户端最终会在套接字上拥有多个图像。而且我还没有想出一个巧妙的机制来拆分每个图像的字节(实际上,我只需要最新的一个)。我尝试使用UDP,但得出的结论是我无法发送100kb的dgram,只能发送64kb的。即便如此,我也不应该使用超过1500字节;否则数据包将在网络上被分割,丢失部分数据包的可能性会更大。所以现在我有点困惑。我是否应该继续使用TCP并在每个图像的末尾放置一些转义字节,以便客户端可以将