客户端tcp套接字端口在连接到服务器后更改

时间:2012-06-06 05:58:33

标签: boost binding boost-asio

使用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为什么?

2 个答案:

答案 0 :(得分:1)

等了太长时间才得到答案......我自己解决了这个问题。问题出在connect命令上。

我正在使用basic_socket的connect命令,但connect命令应该是:

socket.connect(*endpoint_iterator,ec); 

现在工作正常。

答案 1 :(得分:0)

你可以打印tcp :: v4(),如果不是点addres这个值是“0.0.0.0”