2016-10-22 6 views
0

В настоящее время я пытаюсь войти в сетевое программирование с boost asio.Я не могу установить соединение с boost :: asio :: connect

Я решил попробовать простую связь для начала, но у меня уже возникли проблемы с этим. Для начала я просто хотел установить соединение между сервером и клиентом, работающим на одном компьютере.

Это мой код сервера:

try 
{ 
    tcp::endpoint endpoint(tcp::v4(), port); 
    tcp::acceptor acceptor(m_io_service, endpoint); 

    while (1) { 
     tcp::socket socket(m_io_service); 

     acceptor.accept(socket); 

     std::cout << "Someone connected!"; 
    } 

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

Обратите внимание, что мой io_service является переменной-члена, в то время как порт равен 10112.

И следить за ним, вот мой код клиента:

try 
{ 
    tcp::resolver resolver(m_io_service); 
    tcp::resolver::query query(tcp::v4(), "10112"); 
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); 

    tcp::socket socket(m_io_service); 
    boost::asio::connect(socket, endpoint_iterator); 

    std::cout << "Client found server."; 
} 
catch (std::exception& e) 
{ 
    std::cout << "Exception: " << e.what() << std::endl; 
} 

Это то, что я получил из нескольких учебных пособий до сих пор.

Однако до сих пор я не могу добраться до соединения. Мое предположение было бы в том, что мой запрос предоставляет некоторые неправильные значения, потому что я получаю итератор размером один в обоих случаях - сервер вверх и вниз.

Похоже, что это просто закончится с некоторым значением по умолчанию, которое не будет похоже на мой фактический сервер, даже если он будет вверх. Это приводит к возможной ошибке в данных запроса, которые я предполагаю.

Однако я действительно не знаю, как это сделать.

У вас есть совет для меня?

ответ

0

ли вы запустить объект io_service: http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/reference/io_service/run.html

И вы указать объект работы, чтобы сохранить это работает?

+0

Я просто попытался вызвать run(), но ничего не изменил. Что вы имеете в виду с объектом, чтобы он работал? – Sossenbinder

+0

Дополнительную информацию о рабочем объекте можно найти здесь: http://stackoverflow.com/a/17157360/6928230 –