在维基百科中浏览RUDP时,我得到以下定义为了确保质量,它通过添加以下附加功能来扩展UDP:1.接收数据包的确认2.开窗与流量控制3.丢包重传4.过度缓冲(比实时流更快)这也是TCP所做的。现在,当这些功能实现到UDP时,两者之间的最大区别是什么。我是网络新手,请解释。 最佳答案 TCP在开始通信流之前在2个端点之间建立持久连接。RUDP没有,因为它在UDP之上提供服务。来自draftRUDPislayeredontheUDP/IPProtocolsandprovidesreliablein-orderdelivery(uptoam
当我使用TCP时,我需要目标端口(以便能够与另一台主机上的其他进程“对话”)和源端口(因为TCP是面向连接的,所以我会像ack、seq和更多的)。另一方面,无连接的UDP也需要源端口。这是为什么呢?(我不需要发回数据) 最佳答案 可能有两个原因。首先,接收者通常需要回复,为此提供标准工具很有用。其次,您可能有多个接口(interface)(网卡)并使用源地址,您决定必须使用其中的哪个来发出数据包。 关于tcp-为什么我需要UDP上的源端口,我们在StackOverflow上找到一个类似的
Apple是否允许在iOS应用程序中使用套接字(TCP或UDP)并允许它们在AppStore上使用?如果是,请提供Apple的官方确认或一些应用示例。 最佳答案 是的。从这个landingpage开始iOS网络主题。如果您想使用UDP/TCP,请查看CFNetworkProgrammingGuide;特别是流。通常您会集成bonjour进入您的应用程序,以便您获得通过流(BSD套接字)建立TCP/UDP通信所需的信息:BonjouristhepowerfulzeroconfigurationprotocolfromApplethat
我在网上阅读了很多关于为什么要使用UDP或TCP的资料,但我仍然需要帮助来理解一些东西。如果我在我的应用程序中实现错误检查和重新传输,我为什么还要考虑使用TCP?开发人员利用TCP的内置功能而不是在应用层自己实现它们是否更方便?我知道TCP包括流量控制,这使得它对网络上的其他服务更友好,但是,如果我是一个自私的SCSS,可以对其他人都该死并希望我的应用程序尽可能快,我不会选择UDP在每种情况下?在您的应用程序中重新实现TCP的功能是否是一项艰巨的任务?我只是需要帮助来理解,如果UDP快得多,为什么每个应用程序不会在所有情况下都使用UDP。 最佳答案
intrecvfrom(SOCKETsocket,char*buffer,intbuflen,intflags,structsockaddr*from,int*fromlen);我知道recvfrom()在从套接字读取buflen后立即返回。我的问题是-如果我请求了2000的buflen并且套接字队列中的单个数据包的大小为2400怎么办?如果我请求的buflen为2000,而套接字队列中的单个数据包大小为1400,会怎样?上述问题的答案是否适用于TCP和UDP?如果不是,有什么区别。提前感谢您的回复。 最佳答案 首先,recvfro
我知道,我知道。这个问题之前已经被问过很多次了。但是我现在已经花了一个小时在谷歌上搜索,但没有找到我要找的东西,所以我会再问一遍,并提及我的背景以及让我难以做出决定的原因:我正在为一个游戏编写服务器,其中响应时间非常重要并且时不时丢包不是问题。从这一点以及作为服务器的我大部分情况下必须向许多不同的客户端发送相同数据的事实来看,显而易见的答案是UDP。当我遇到这个时,我已经开始编写代码了:InsomeapplicationsTCPisfaster(betterthroughput)thanUDP.Thisisthecasewhendoinglotsofsmallwritesrelativ
我正在考虑将方法存储在字典中(使用友好的用户可读字符串作为键),以便可以将“echo,helloworld”之类的消息发送到服务器,并且服务器知道调用:echo(字符串消息)并传入“helloworld”。伪代码:publicdelegatevoidNetCommand(objectparam);voidMyNetCommand(objectparam){strings=paramasstring;Console.WriteLine(s);}Dictionarycommands=newDictionary();staticvoidMain(string[]args){commands.
我无法让它工作,但这并不意味着它不可能。我看到其他人说我需要使用TCP端口,但是有没有人有任何指向最终决定权的官方文档的指针? 最佳答案 是的,这就是重点。但在iOS4.2.1(例如)中,您可以在后台接收UDP而无需任何确认。只需将CFReadStream声明为在applicationDidEnterBackground中监听的VoIP套接字...从iOS4.3及更高版本开始,该方法不再有效。Media5还使用了一个“技巧”来保持应用程序处于事件状态,从而在后台也使用UDP接收来电。 关
我创建了某种类型的客户端/服务器应用程序,它有自己的数据ACK系统。由于某些限制,它最初是用TCP编写的,但基础是在考虑UDP的情况下编写的。我发送到服务器的数据包有自己的封装(数据包ID和数据包大小header。我知道UDP也有一个校验和,所以我没有为此添加header),但我知道TCP是如何工作的服务器可能不会收到整个数据包,因此我收集并缓冲了收到的数据,直到收到完整的有效数据包。现在我有机会将我的客户端/服务器程序更改为UDP,而且我知道与TCP的一个区别是数据的接收顺序与发送顺序不同(这就是我添加数据包IDheader的原因)。我想知道的是:如果我发送多个数据包,是否会在没有保
我知道对于TCP,每个连接都会创建一个新的套接字。UDP是否也为每个连接创建一个新套接字? 最佳答案 没有。当您收到一条消息(recvmsg())时,您会被告知发送该消息的对等方的IP地址;当您回复(sendmsg())时,您指定消息发送到的IP地址。这是通过单个套接字完成的。另见. 关于sockets-是否为每个UDP连接打开一个新套接字?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest