打开一个零填充IP字符串的boost套接字

时间:2015-04-07 13:46:45

标签: c++ sockets boost tcp

我使用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对象?

1 个答案:

答案 0 :(得分:0)

如果192.168.002.50确实有用,我说它是八进制解码失败的尝试(不应该发生)。

否则它似乎是boost::asio::ip::address_v::from_string中的限制。毫无疑问,这将有合理的理由(我没有记住RFC)。

您可以随时手动解析,并使用带八位字节的构造函数:

  address_v4(address_v4::bytes_type {192,168,2,50});