如果服务器未运行,则async_connect成功
async_connect successfull if server is not running
我正在尝试检查boost::asio::async_connect
是否成功,但是即使服务器不是启动的,也没有收到错误。如何正确检查成功?谢谢!
main.cpp
#include <boost/asio.hpp>
#include "tcp_client.h"
typedef boost::asio::ip::tcp tcp;
int main(int argc, char* argv[])
{
char host[16] = "127.0.0.1";
boost::asio::io_service io_service;
TCP_Client client(host, io_service);
io_service.run();
return 0;
}
tcp_client.h
#pragma once
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <iostream>
typedef boost::asio::ip::tcp tcp;
class TCP_Client
{
public:
TCP_Client(std::string newHost, boost::asio::io_service& io_service);
private:
void handle_connect(const boost::system::error_code& error);
boost::asio::ip::tcp::socket socket;
boost::asio::ip::tcp::acceptor acceptor;
};
tcp_client.cpp
#include "tcp_client.h"
TCP_Client::TCP_Client(std::string host, boost::asio::io_service& io_service)
: socket(io_service), acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 12121))
{
tcp::resolver resolver(socket.get_io_service());
tcp::resolver::query query(host, "12121");
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
boost::asio::async_connect(socket, endpoint_iterator, boost::bind(&TCP_Client::handle_connect, this, boost::asio::placeholders::error));
}
void TCP_Client::handle_connect(const boost::system::error_code& error)
{
if (!error && socket.is_open())
{
std::cout << "Connected" << std::endl;
}
else
{
std::cout << "Error handle connect:" << error << std::endl;
}
int a;
std::cin >> a;
}
您有一个绑定到端口的接受器:
... acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 12121)) ...
所以你正在与自己联系。您的客户端不需要也不应该有 TCP 接受器,除非它应该接受 TCP 连接。
相关文章:
- 为什么std::async使用同一个线程运行函数
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 使用用户定义的参数调用future/async并调用类方法
- WinSock2:connect() 提供"连接被拒绝"
- 使用 std::async 时死锁,将来作为成员
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 为什么我不能将引用作为 std::async 的函数参数传递
- 在 QTextEdit 中使用指针或在 Qt-Creator 上使用 connect()
- std::async from std::async in windows xp
- Google Cloud Pubsub Async Streaming API in C++
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- gnuradio c++ connect self() throw bad_weak_ptr
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- 如何将函数指针传递给方法,以便它可以在Qt的connect()中使用?
- std::async 不会立即调用
- 在CTOR vs Connect方法中提升套接字与stream_socket端点
- async中没有匹配的函数(模板中未解析的类型)
- Make zmqpp::socket::connect a std::future
- C-Free and MySQL connect
- 当我使用Connect信号和插槽时,会出现此分解错误