我使用boost :: asio :: async_read_until从套接字读取消息,使用换行符作为分隔符。
e.g。 boost :: asio :: async_read_until(socket,buffer," \ n",.....)
一切都是笨蛋,并且工作正常。
是否有另一种方法可以使用此函数或类似函数,它可以检测到无序换行符的无限字符序列。
e.g。恶意用户可能会在我的服务器上触发连续的ZEROS序列
我无法成为历史上第一个遇到此问题的人
答案 0 :(得分:0)
您可以使用4次重载的第4版:
http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio/reference/async_read_until/overload4.html
在您的函数对象(通常是状态机的接口)中,您可以计算字符数,检测非法数据流或任何其他必要的方法。
可能值得一提的是,如果您的应用程序在恶意环境(即面向Internet)中运行,那么您可能希望使用async_read_some
来提供状态机,并且需要一个计时器来捕获和终止连接坐下来消耗资源。