我正在使用boost::asio
在客户端应用程序和服务器应用程序中进行UDP
和TCP通信
。我发现我只能使用UDP
传输大小为65535字节
的数据,因为这似乎是UDP中的最大包大小。
TCP
中也存在最大包大小限制,即65535字节
?但是我可以使用boost::asio::write
在TCP
中发送大于最大包大小的块,并且在客户端应用程序上全部读取它。我发现在TCP中我不必担心最大包大小,但在UDP中,我必须确保每个socket.send_to
都使用小于最大包大小
的缓冲区。
这是如何工作的?这是因为TCP
是基于流的,负责在较低层创建数据包吗?
是否有办法增加UDP
中的最大包大小
?
我从服务器端发送的UDP数据包
中的某些字节可能会在客户端读取时丢失吗?如果是,则是否有一种方法仅在UDP的客户端侧检测到丢失?