我使用boost 1.53并使用以下代码打开套接字:
void openConnection(std::string ip, std::string port)
{
tcp::resolver resolver_( m_ioService );
tcp::resolver::query query(boost::asio::ip::tcp::v4(), ip, port);
tcp::resolver::iterator iterator = resolver_.resolve(query);
boost::shared_ptr<tcp::socket> socket_(new tcp::socket(m_ioService));
boost::asio::connect(*socket_, iterator);
m_tcpSocket = socket_;
}
如果我使用ip =&#34; 192.168.2.50&#34;我很好,但如果我使用&#34; 192.168.002.050&#34;我打开连接失败了。
有没有办法为这种字符串调整tcp :: resolver :: query对象?
答案 0 :(得分:0)
如果192.168.002.50
确实有用,我说它是八进制解码失败的尝试(不应该发生)。
否则它似乎是boost::asio::ip::address_v::from_string
中的限制。毫无疑问,这将有合理的理由(我没有记住RFC)。
您可以随时手动解析,并使用带八位字节的构造函数:
address_v4(address_v4::bytes_type {192,168,2,50});