在类中重新初始化asio::socket
Reinitialise asio::socket in class
我发现,如果我想使用boost::socket
作为类成员,我必须使用初始化列表定义它,甚至必须在构造函数调度之前定义。
这意味着,我必须用一些虚拟参数证明它的构造函数,当我有需要的数据时,我需要再次重新初始化它。
client.hpp
class SocketClient {
private:
int port; //Port, currently unused
boost::asio::io_service io_service; //This is my "dummy" parameter
boost::asio::ip::tcp::resolver::iterator endpoint_iterator;
boost::asio::ip::tcp::socket sock; //Socket class instance
public:
void init(const char*, const char* );
SocketClient::SocketClient():sock(io_service){}; //Giving empty "io_service" to the "sock"
bool read(int bytes, char *text);
bool send(int length, char *text);
bool send(std::string text);
unsigned int timeout;
};
之后,当init()
方法被调用时,我需要为sock
提供初始化的io_service
。我不知道该怎么做:
client.h
void SocketClient::init(const char* ip_a, const char* port_a) {
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query(ip_a, port_a);
boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
//Error (unsuported operator =):
sock=boost::asio::ip::tcp::socket(io_service);
//Error (term does not evaluate to a function taking 1 arguments):
sock(io_service);
}
在这里你可以看到整个项目,没有任何删除
您已经初始化了套接字,现在只需要连接
tcp::resolver resolver(io_service);
tcp::resolver::query query(tcp::v4(), ip_a,port_a);
tcp::resolver::iterator iterator = resolver.resolve(query);
sock.connect(*iterator);
相关文章:
- 操作系统 (Linux) 在使用 boost::asio::generic::raw_protocol::socket
- 为什么可以重复使用这个boost::asio::tcp::socket
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 调用socket.remote_endpoint(提升 asio 库)线程安全性
- 将 std::bind 应用于带有参数 <boost::asio::ip::tcp::socket> 时出错?
- 通过 Socket 通过 boost asio 发送和接收 protobuf 数据
- 从 asio::ip::tcp::socket 直接写入 std::string
- boost::asio::write() VS socket->write_some()
- 线程安全关闭同步使用的 boost::asio::ip::tcp::socket
- 移动构造函数不使用 boost::asio::ip::tcp::socket 调用
- boost::asio,为什么我的socket在调用async_receive_from后立即运行回调函数
- 自定义套接字继承自boost::asio::ip::tcp::Socket
- 修改提升::asio::socket::set_option
- Boost Asio Socket issue
- C++ Boost ASIO socket errors
- Boost::asio::socket如何从它获得int或int,这将是跨平台可赋值的
- 我应该使用阻塞还是异步boost::asio::socket读/写来实现协议握手?
- 在类中重新初始化asio::socket
- boost::asio::socket 保持活动状态set_option异常
- 转移boost::asio::socket堆栈变量的所有权