我一直在为 TCP 和 UDP 网络编写一个库,并考虑使用数据包。目前我已经实现了一个包类,它可以像 C++ 标准库的流类一样使用(它有 << 和 >> 用于输入和读取数据)。我计划像这样发送数据包:
bytes 1-8 - uint64_t as the size of the packet.
bytes 8-size - contents of the packet.
但是有一个问题。如果恶意客户端发送以 TB 为单位的大小和随机乱码作为填充物怎么办?服务器的内存充满了随机乱码,它将冻结/崩溃。
让服务器决定接收数据包的最大允许大小是个好主意吗?
或者我应该丢弃数据包并将数据作为流传输(读/写将完全由库的用户决定)?
(PS:我不是以英语为母语的人,所以请原谅我可能对语言的可怕使用。)