В настоящее время я пытаюсь войти в сетевое программирование с 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;
}
Это то, что я получил из нескольких учебных пособий до сих пор.
Однако до сих пор я не могу добраться до соединения. Мое предположение было бы в том, что мой запрос предоставляет некоторые неправильные значения, потому что я получаю итератор размером один в обоих случаях - сервер вверх и вниз.
Похоже, что это просто закончится с некоторым значением по умолчанию, которое не будет похоже на мой фактический сервер, даже если он будет вверх. Это приводит к возможной ошибке в данных запроса, которые я предполагаю.
Однако я действительно не знаю, как это сделать.
У вас есть совет для меня?
Я просто попытался вызвать run(), но ничего не изменил. Что вы имеете в виду с объектом, чтобы он работал? – Sossenbinder
Дополнительную информацию о рабочем объекте можно найти здесь: http://stackoverflow.com/a/17157360/6928230 –