草庐IT

c - UDP recvfrom查询

intrecvfrom(SOCKETsocket,char*buffer,intbuflen,intflags,structsockaddr*from,int*fromlen);我知道recvfrom()在从套接字读取buflen后立即返回。我的问题是-如果我请求了2000的buflen并且套接字队列中的单个数据包的大小为2400怎么办?如果我请求的buflen为2000,而套接字队列中的单个数据包大小为1400,会怎样?上述问题的答案是否适用于TCP和UDP?如果不是,有什么区别。提前感谢您的回复。 最佳答案 首先,recvfro

sockets - 游戏服务器的 tcp 或 udp?

我知道,我知道。这个问题之前已经被问过很多次了。但是我现在已经花了一个小时在谷歌上搜索,但没有找到我要找的东西,所以我会再问一遍,并提及我的背景以及让我难以做出决定的原因:我正在为一个游戏编写服务器,其中响应时间非常重要并且时不时丢包不是问题。从这一点以及作为服务器的我大部分情况下必须向许多不同的客户端发送相同数据的事实来看,显而易见的答案是UDP。当我遇到这个时,我已经开始编写代码了:InsomeapplicationsTCPisfaster(betterthroughput)thanUDP.Thisisthecasewhendoinglotsofsmallwritesrelativ

c# - 将方法存储在自定义 Tcp 或 Udp 服务器的字典中。这是个好主意吗? C#

我正在考虑将方法存储在字典中(使用友好的用户可读字符串作为键),以便可以将“echo,helloworld”之类的消息发送到服务器,并且服务器知道调用:echo(字符串消息)并传入“helloworld”。伪代码:publicdelegatevoidNetCommand(objectparam);voidMyNetCommand(objectparam){strings=paramasstring;Console.WriteLine(s);}Dictionarycommands=newDictionary();staticvoidMain(string[]args){commands.

ios - BSD UDP 套接字能否与 iOS 的 VoIP 后台模式一起使用?

我无法让它工作,但这并不意味着它不可能。我看到其他人说我需要使用TCP端口,但是有没有人有任何指向最终决定权的官方文档的指针? 最佳答案 是的,这就是重点。但在iOS4.2.1(例如)中,您可以在后台接收UDP而无需任何确认。只需将CFReadStream声明为在applicationDidEnterBackground中监听的VoIP套接字...从iOS4.3及更高版本开始,该方法不再有效。Media5还使用了一个“技巧”来保持应用程序处于事件状态,从而在后台也使用UDP接收来电。 关

sockets - UDP 数据包可以像 TCP 一样部分发送吗?

我创建了某种类型的客户端/服务器应用程序,它有自己的数据ACK系统。由于某些限制,它最初是用TCP编写的,但基础是在考虑UDP的情况下编写的。我发送到服务器的数据包有自己的封装(数据包ID和数据包大小header。我知道UDP也有一个校验和,所以我没有为此添加header),但我知道TCP是如何工作的服务器可能不会收到整个数据包,因此我收集并缓冲了收到的数据,直到收到完整的有效数据包。现在我有机会将我的客户端/服务器程序更改为UDP,而且我知道与TCP的一个区别是数据的接收顺序与发送顺序不同(这就是我添加数据包IDheader的原因)。我想知道的是:如果我发送多个数据包,是否会在没有保

sockets - 是否为每个 UDP 连接打开一个新套接字?

我知道对于TCP,每个连接都会创建一个新的套接字。UDP是否也为每个连接创建一个新套接字? 最佳答案 没有。当您收到一条消息(recvmsg())时,您会被告知发送该消息的对等方的IP地址;当您回复(sendmsg())时,您指定消息发送到的IP地址。这是通过单个套接字完成的。另见. 关于sockets-是否为每个UDP连接打开一个新套接字?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

python - 如何让服务器监听 TCP 和 UDP?

我正在使用pythontwisted,我有两台独立的服务器在工作,一台接收TCP,一台接收UDP,它们各自使用reactor.listenTCP(PORT,factory)reactor.run()和reactor.listenUDP(PORT,BaseThreadedUDPServer())reactor.run()它们都可以工作,但现在我想将它们组合成一个同时接收TCP和UDP的服务器,但它们都使用变量reactor。reactor不是扭曲的,不是我自己的。如果是我自己的,我可以为每个更改名称。谢谢! 最佳答案 这只是对Mark

c - 如何使用 C 对 TCP 和 UDP 进行基准测试?

我想使用C套接字为TCP和UDP测量消息延迟和吞吐量。我正在编写在不同服务器上运行的client.c和server.c(问题1:我必须这样做吗?)来完成此操作。我必须使用不同的数据包大小和多次试验进行多次测量并绘制我的结果。对于消息延迟:发送不同大小的数据包并测量往返时间并除以2以获得延迟。问题2:我发送了一个大小为x的数据包,然后我从server.c将数据包发回。所以在客户端我启动计时器,发送数据包然后等到我收到数据包然后停止计时器。timer/2是我的延迟?衡量这个的步骤是什么?对于吞吐量:问题3:如何衡量两者的吞吐量?执行此操作的步骤是什么?我是使用C语言进行Unix套接字编程的

c++ - 在 MFC 应用程序中监听 UDP 或切换到 TCP

我正在编辑一个遗留的MFC应用程序,我必须添加一些基本的网络功能。操作方必须接收一个简单的指令(数字1、2、3、4...)并根据该指令执行一些操作。客户希望延迟尽可能快,所以我自然而然地决定使用数据报(UDP)。但是阅读各种资源让我感到困惑。我无法在MFC中收听UDP套接字(CAsyncSocket),只能调用阻塞和等待的Receive。屏蔽UI并不是明智之举。所以我想我可以使用一些线程技术,但由于我对MFC不是很了解,应该如何实现?问题的另一部分是考虑到可靠性和实现问题,我应该这样做还是恢复到TCP。我知道UDP不可靠,但它到底有多不可靠?我读到它最多快50%,这对我来说很重要。我使

python - TCP 与 UDP 套接字延迟基准

我已经在Python中通过TCP和UDP实现了套接字通信的小型基准测试。令人惊讶的是,TCP的速度几乎是UDP的两倍。为了避免路由影响,服务器和客户端运行在同一台Unix机器上,但在不同的线程上。也许代码有用。这是服务器代码:importsocketimportsyshost='localhost'port=8888buffersize=8server_address=(host,port)defstart_UDP_server():socket_UDP=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)socket_UDP.bind(ser