这是不是因为TCP连接是持久连接,所以服务器需要同时处理很多请求,因此需要不同的连接套接字?但是如果UDP传输完成,下一个连接将发起到同一个服务器套接字,所以UDP只需要一个套接字。这是我的推测。这是正确的吗? 最佳答案 原因是TCP有两种不同的状态需要控制,而UDP只有一种。当监听端口上的TCP连接时,网络堆栈需要跟踪端口号和你正在监听的接口(interface),以及传入的TCP连接请求的积压列表套接字,并将该状态保存在与您传递给listen()/bind()/accept()的套接字关联的内部数据结构中。只要套接字存在,该数据
我正在编写一个基于UDP的客户端服务器并且已经获得了相当多的代码,但是我对UDP服务器如何将响应发送回UDP客户端感到困惑,这是我目前的理解:假设一个UDP客户端想要和一个UDP服务器通信,所以它会向UDP服务器发送一个请求(使用在客户端打开的UDP套接字),现在这将到达UDP服务器的UDP模块,UDP模块将使用端口号识别UDP服务,并将该请求发送到该UDP服务/服务器。现在,由于UDP是一种无连接协议(protocol),因此与TCP不同,UDP服务器不会通过某些连接发送响应,相反,UDP服务器将从请求中提取源IP地址和源端口并将响应发送回客户端.我的困惑是,在服务器端,有一个绑定(
我正在编写一组客户端/服务器程序根据客户端请求的操作,我使用makeTCP或者UDPrequest。客户端的实现很简单,因为我可以轻松地打开与任何协议(protocol)的连接并将请求发送到服务器端。另一方面,在服务器端,我想在同一个端口上同时监听UDP和TCP连接。此外,我喜欢服务器为每个连接请求打开新线程。我采用了以下解释的方法:linktext我通过为每个TCP/UDP请求创建新线程来扩展此代码示例。如果我只使用TCP,这会正常工作,但当我尝试进行UDP绑定(bind)时它会失败。请给我任何建议,我该如何纠正这个问题。发送这是服务器代码:publicclassServer{pub
我正在准备我的大学考试,去年的问题之一是“如何使UDP多播可靠”(如tcp,丢失数据包的重传)我想过这样的事情:服务器使用UDP发送组播每个客户端发送接收该数据包的确认(使用TCP)如果服务器意识到不是每个人都收到数据包,它会向特定客户端重新发送多播或单播问题是可能有一个客户端经常丢失数据包并强制服务器重新发送。好吃吗? 最佳答案 Everyclientsendacknowledgementofreceivingthatpackets(usingTCP)为每个数据包发送一个ACK,并使用TCP这样做,不能扩展到大量的接收者。使用
我想知道MSMQ(MicrosoftMessagingQueue)在TCP或UDP上工作吗??在什么端口上? 最佳答案 此知识库文章详细介绍了使用的端口和协议(protocol):http://support.microsoft.com/default.aspx?scid=kb;EN-US;178517ThefollowingportsareusedforMicrosoftMessageQueuingoperations:TCP:1801RPC:135,2101*,2103*,2105*UDP:3527,1801Thefollowi
SOCKS5协议(protocol),由RFC1928描述,提供对UDP的支持。总而言之,希望通过SOCKS5服务器中继UDP数据包的客户端至少必须:打开到SOCKS5服务器的TCP连接;发送一个UDPASSOCIATE请求(cfsection4);从服务器接收地址和端口,它必须发送要中继的UDP数据包;将数据报(UDP)发送到该地址,用一些header封装(cfsection7)。以下是一些相关的引述,来自section6:AUDPassociationterminateswhentheTCPconnectionthattheUDPASSOCIATErequestarrivedont
我想制作一款在Internet上运行的多人游戏,而不仅仅是像LAN这样的低延迟、高吞吐量环境。在我的游戏的某些网络方面,UDP显然更适合,例如传输有关各个玩家的位置和速度的信息。必须尽快接收此数据,重新发送丢失的数据包无济于事,因为该数据到达客户端时已无关紧要。丢弃一些数据包是完全可以的。但是,我的游戏还有一些其他方面严格要求按顺序、保证交付。数据包的自动分段(将大块数据分开并放回原处)也将非常有用。似乎TCP完成了所有这些工作。除非严格按顺序并且没有丢失数据包,否则数据根本没有用。在某些情况下,此类数据的延迟将不可避免地受到影响,但这是不可避免的。因此,与其在UDP之上实现类似TCP
TCP有更大的计算开销来确保数据包的可靠传递。但是,由于现代网络速度很快,是否存在UDP的性能超过TCP的可靠性的情况?与TCP相比,UDP是否还有其他特殊优势? 最佳答案 我可以看到两种情况,其中UDP优于TCP。首先,UDP的一个吸引人的特点是,由于它不需要重新传输丢失的数据包,也不需要进行任何连接设置,因此发送数据会产生较少的延迟。这种较低的延迟使UDP成为对延迟敏感的应用程序(如音频和视频)的有吸引力的选择。其次,多播应用程序构建在UDP之上,因为它们必须进行点对多点的操作。将TCP用于多播应用程序会很困难,因为现在发送方必
有人告诉我,对于需要低延迟的高频交易(HFT)系统,使用TCP而不是UDP。有人告诉我,使用TCP可以建立点对点连接,而使用UDP则不能,但是根据我的理解,您可以将UDP数据包发送到特定的IP/端口。此article中使用了多个参数至于为什么UDP>TCP用于游戏,但我可以看到与HFT的相关性。为什么TCP是用于HFT的更好协议(protocol)?(管理员:我之前关于这个问题的帖子被默默删除了,没有任何解释。如果我违反了使用条款,请提醒我,而不是默默删除问题) 最佳答案 如果您不需要TCP提供的某些功能,UDP优于TCP。每个功能
现在有些游戏使用网络系统,通过UDP传输消息,并确保消息的可靠性和有序性。例如,RakNet是一个流行的游戏网络引擎。它仅使用UDP进行连接,并有一个完整的系统来确保数据包可靠且有序(如果您愿意)。我的基本问题是,这是怎么回事?TCP与有序、可靠的UDP不是一回事吗?是什么让它变得如此慢,以至于人们不得不重新发明轮子? 最佳答案 通用/特化TCP是一个通用的可靠系统UDP+任何特殊用途的可靠系统。专用的东西通常比通用的东西更好,因为它们是专门的东西。流/消息TCP是基于流的UDP是基于消息的将离散游戏信息映射通常更好地发送到基于消息