使用boost asio我试图将套接字绑定到特定端口,并且绑定是正确的,直到我连接到服务器。
socket.open(tcp::v4(), ec);
socket.set_option(tcp::socket::reuse_address(true),ec);
socket.bind(tcp::endpoint(tcp::v4(), port_client), ec);
.
.
cout <<"before connect:"<<socket.local_endpoint().address().to_string()<<":"<<socket.local_endpoint().port()<<endl;
到目前为止端口还可以,但是当我将它连接到服务器时:
boost::asio::connect(socket, endpoint_iterator,ec);
.
cout <<"after connect:"<<socket.local_endpoint().address().to_string()<<":"<<socket.local_endpoint().port()<<endl;
本地端口更改为任何其他端口。有人可以帮忙吗? 另外地址出来是0.0.0.0为什么?
答案 0 :(得分:1)
等了太长时间才得到答案......我自己解决了这个问题。问题出在connect命令上。
我正在使用basic_socket的connect命令,但connect命令应该是:
socket.connect(*endpoint_iterator,ec);
现在工作正常。
答案 1 :(得分:0)
你可以打印tcp :: v4(),如果不是点addres这个值是“0.0.0.0”