【发布时间】:2016-08-03 12:38:46
【问题描述】:
我正在尝试编写一个通过协议 B 处理协议 A 的服务器。
协议A是HTTP或RTSP,协议B是简单的二进制包序列:
[packet length][...encrypted packet data...]
所以我想使用这样的东西:
boost::asio::async_read_until(socket, inputBuffer, "\r\n\r\n", read_handler);
但是,不要使用socket,而是使用一些连接到协议 B 处理程序的伪套接字。
我有一些想法:
忘记
async_read、async_read_until等,为A和B写两个状态机。混合方法:
async_read_*用于协议 B,状态机用于 A。制作内部代理服务器。
我不喜欢 (1) 和 (2) 因为
很难将 A 与 B 解耦(我希望能够禁用协议 B)。
丑。
(3) 看起来很丑 :-)
所以问题是:我该如何实现呢?
【问题讨论】:
标签: c++ sockets boost architecture network-programming