【发布时间】:2017-10-11 09:26:17
【问题描述】:
我在我的客户端应用程序和服务器应用程序中使用boost::asio 执行UDP 和TCP communication。我发现我只能使用 UDP 传输大小为 65535 bytes 的数据,因为它似乎是 UDP 中的最大数据包大小。
最大数据包大小限制也存在于TCP 中,即65535 bytes ?但是我可以在TCP 中使用boost::asio::write 发送大于最大数据包大小的块,并在客户端应用程序上正常阅读。我看到我不必担心 TCP 中的最大数据包大小,但在 UDP 中,我确保每个 socket.send_to 都使用小于 max packet size 的缓冲区完成
这是如何工作的?这是因为TCP 是基于流的,负责在较低层创建数据包?
有什么办法可以增加UDP 中的max packet size 吗?
当我在客户端读取时,我从服务器端发送的 UDP packet 的某些字节是否可能会丢失?如果是,那么有没有办法仅检测 UDP 客户端的丢失?
【问题讨论】:
标签: c++ sockets tcp udp boost-asio