c++ - 在 2 个线程中 boost 套接字

标签 c++ multithreading sockets boost boost-asio

我正在使用 boost 套接字和 boost 线程。 (同步套接字)。如果我理解正确的话,这个方案是行不通的。

using boost::asio::ip::tcp;
boost::asio::ip::tcp::socket *MySocket;
bool Key = true;

void Function1()
{
    try
    {
        boost::asio::io_service io_service;
        tcp::resolver resolver(io_service);
        boost::system::error_code error;
        boost::asio::ip::address address = boost::asio::ip::address::from_string(IP, error);
        tcp::endpoint ep(address, 1235);
        MySocket = new tcp::socket(io_service);
        MySocket->connect(ep);
        Key = false;
    }
    catch(std::exception e)
    {
        std::cout<<e.what;
    }
}

void Function2()
{
    boost::array <char, 8> buf;
    size_t len = MySocket->read_some(boost::asio::buffer(buf), error);
    //Always len == 0 and buf.data() is MMMMMMM
}

void main()
{
    boost::thread Thread(&Function1);
    while(Key);
    Function2();
    MySocket->close();
}

最佳答案

您使用 local io_service 创建套接字,它在 function1 返回后被销毁。使其全局化。 (当然,不要以这种方式设计真正的应用程序!坚持使用 Asio 文档中描述的方法。)

关于c++ - 在 2 个线程中 boost 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849523/

相关文章:

C++ "Function"未在此范围内声明

c++ - C++:指针数组

java - 多线程有用到什么程度?

python - 线程可以切换CPU吗?

php - 使用fsockopen进行PHP GET和POST数据

java - 如何使用同一个Socket来多个InputStreamReader和OutputStreamWriter

c++ - 将多个数组转换为元组

c++ - vk::DeviceQueueCreateFlags() 实际上做了什么?

c++ - 互斥保护 std::condition_variable

python - 扫描一个子网范围,Python 2.7 端口扫描器