c++ - 使用Boost ASIO处理无套接字的TCP

标签 c++ sockets boost tcp boost-asio

按照有关创建 a combined TCP/UDP asynchronous server 的教程进行操作后,我正在进一步研究应用 Boost ASIO 来直接从字节流中解析数据。

我的目标是提供一些独立于套接字的机制。在我的场景中,我正在处理来自 Java 实现的文件描述符。在 Java 中,我可以使用以下方法读取文件描述符:

is = new FileInputStream(fd);
os = new FileOutputStream(fd);

是否可以用某种输入和输出字节流替换套接字并让 ASIO 负责处理 TCP 连接?

想到的是使用 socket.h 中的 connect;类似于:

connect((int) fd, (struct sockaddr *) &peerAddr, sizeof(peerAddr))

这当然会建立一个连接并期望一个对等点 sockaddr_in 连接到。我希望可能有一些类似的方法将 boost::asio::ip::tcp::socket 绑定(bind)到文件描述符。这种性质的东西可能吗?

最佳答案

将评论移至答案,是的,boost asio 具有这样的功能,称为 Socket IOStreams,请参见此处:http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview/networking/iostreams.html

关于c++ - 使用Boost ASIO处理无套接字的TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967357/

相关文章:

c++ - 如何在我的 Qt 项目文件中包含 Boost?

c++ - 每次我想在基本类型之间进行转换时,我真的应该使用 static_cast 吗?

c++ - 这里是否需要类型名称?

c++ - 包含 <string> 会导致 std-lib 函数出现 'redefinition' 错误

Python IRC 机器人 : Set variables from channel reading

Java多线程仅用于2台计算机,如何在main中执行

c - 从套接字读取 C 数据直到结束字符

c++ - 将 unicode 字符串复制到剪贴板不起作用

c++ - 我可以让 boost::write_graphviz 只写边吗?

c++ - Boost::spirit 流程规则与分支不正确