1

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

4

2 回答 2

1

等待答案太久......自己解决了这个问题。问题出在连接命令上。

我正在使用连接命令 basic_socket 但连接命令应该是:

socket.connect(*endpoint_iterator,ec); 

现在它工作正常。

于 2012-06-11T11:58:16.980 回答
0

您可以打印 tcp::v4(),如果不是点地址,则此值为“0.0.0.0”

于 2012-08-21T15:11:15.067 回答