我开发了一个udp服务器/客户端应用程序,其中服务器有一个套接字,可以连续从40个客户端接收数据。 现在我想知道如果所有40个客户端同时发送数据会发生什么? 根据我的理解,数据必须在接收缓冲区中排队,下一次当我调用recvfrom()时,缓冲区中排队的数据将被接收,即我将不得不调用recvfrom()40次来接收所有40个客户端的数据如果所有客户端同时发送数据。 另外,我想知道40个客户端的所有数据都将在接收缓冲区中排队,否则一些数据也会被丢弃? 另外,数据可以在接收缓冲区中排队的最大缓冲区大小是多少,并且在数据丢失的限制之后是多少?udp套接字中的接收缓冲区/队列的最大大小
0
A
回答
2
即使所有客户端同时发送数据,我也必须调用recvfrom()40次来接收所有40个客户端的数据。
换句话说,你问的是单独的UDP数据报是否可以被网络堆栈组合。答案是:不,它们将作为单独的数据报到达,需要单独拨打recvfrom()
。
此外,我想知道40个客户端的所有数据将在接收缓冲区中排队,否则一些数据也会被丢弃?
UDP不保证传送。数据包可以放在路由的任何地方:通过发送主机,沿路由的任何设备和接收主机。
另外,数据可以在接收缓冲区中排队的最大缓冲区大小是多少,并且在数据丢失的限制之后是多少?
这是依赖于操作系统的,通常是可配置的。请记住,即使到达接收主机,数据包也可能会丢失。
2
相关问题
- 1. 套接字接收缓冲区大小
- 2. 设置接收和发送缓冲区的套接字缓冲区大小
- 3. tcp/ip套接字的接收缓冲区大小
- 4. iPhone的最大套接字缓冲区大小
- 5. C++套接字编程TCP/IP套接字缓冲区的最大大小?
- 6. 但UDP套接字接收缓冲区大小是否会影响延迟?
- 7. C++套接字缓冲区大小
- 8. C#套接字接收缓冲区大小成本
- 9. 的Linux的UDP最大规模的接收缓冲区
- 10. Linux上的UDP套接字;发送成功但无法接收大缓冲区
- 11. netty接收大缓冲区
- 12. Android DatagramSocket接收缓冲区大小
- 13. 接受的套接字的设置缓冲区大小
- 14. 查询C中的最大套接字发送缓冲区大小?
- 15. C#套接字编程 - 如何确定接收缓冲区的大小
- 16. 应使用什么大小的缓冲区来读取UDP套接字?
- 17. Linux套接字缓冲数据大小
- 18. 缓冲区大小在c + +套接字连接
- 19. 指定UDP在运行时的接收缓冲区大小在Linux中
- 20. 更改Windows下的默认套接字缓冲区大小
- 21. 套接字编程的缓冲区大小是多少?
- 22. Python的套接字客户端recv(缓冲区大小)
- 23. 套接字和文件建议的缓冲区大小
- 24. C#:UDP套接字 - 接收未知大小的数据
- 25. 没有填充接收缓冲区的UDP缓冲区溢出?
- 26. UDP sendto()和recvfrom()最大缓冲区大小
- 27. 为什么接收的缓冲区大小比原来通过套接字发送的大?
- 28. 异步客户端套接字,增加缓冲区大小
- 29. 套接字缓冲区大小不增加
- 30. 在Tomcat/Jetty上设置套接字发送缓冲区大小
因此,如果数据从一个套接字的40个客户端到达,它将被缓冲在套接字缓冲区中吗?并且每次调用recvfrom()都会从套接字缓冲区读取数据? – Ayse
它会被缓冲,如果它适合并放弃,如果不适合。 – EJP