c++ - 处理套接字 boost asio tcp ip - C++ 套接字编程

标签 c++ sockets boost tcp ip

我正在使用以下代码成功建立连接、发送和接收消息。我想做的是以某种方式返回已经建立的连接。我假设我需要归还套接字。 在写这个主题之前,我阅读了一些相关的主题——其中一些提到返回套接字不是一个好主意。此处建议使用 shared。 Passing around boost::asio::ip::tcp::socket 不幸的是,我不熟悉这种类型的指针及其用法。你能帮我解决这个问题吗?

 try {
    boost::asio::io_service io_service;

    tcp::resolver resolver(io_service);
    tcp::resolver::query query(server, port);
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);

    my_socket = new tcp::socket(io_service);
    boost::system::error_code error = boost::asio::error::host_not_found;
    boost::asio::connect(*my_socket, endpoint_iterator);


    } catch (std::exception& e) {
    std::cerr << e.what() << std::endl;
}

最佳答案

如果你有 c++11 或更高版本,忽略所有关于共享指针的废话并返回套接字。从 c++11 开始,asio io 对象支持移动构造和移动赋值。 asio 套接字非常轻量级——结构包含两个指针,仅此而已。 ——理查德·霍奇斯

关于c++ - 处理套接字 boost asio tcp ip - C++ 套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41111027/

相关文章:

c++ - 如何获得 C++ 的平均值?

c++ - std::string 部分转换为整数

c - 使用RTRT测试工具进行C语言socket单元测试查询

c++ - 如何从 boost::ptr_vector 中删除 "this"

c++ - 如何使用 boost lexical_cast 库来检查输入

ios - 苹果新款3.3.1

c++ - 在 C++ 中重载 ifstream

使用固定宽度整数时的 C++98 迂腐错误

java - 从 JNI/C++ 代码使用 java 套接字

java - 如果我在套接字上设置超时,即使我将其包装在另一种类型中,它的输入流仍然会抛出超时异常