可以boost :: asio :: async_read_until检测到无穷无尽的流

时间:2017-03-22 16:48:50

标签: c++ sockets boost

我使用boost :: asio :: async_read_until从套接字读取消息,使用换行符作为分隔符。

e.g。 boost :: asio :: async_read_until(socket,buffer," \ n",.....)

一切都是笨蛋,并且工作正常。

是否有另一种方法可以使用此函数或类似函数,它可以检测到无序换行符的无限字符序列。

e.g。恶意用户可能会在我的服务器上触发连续的ZEROS序列

socat / dev / zero TCP4:localhost:55555

我无法成为历史上第一个遇到此问题的人

1 个答案:

答案 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来提供状态机,并且需要一个计时器来捕获和终止连接坐下来消耗资源。