1

ブースト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

答えを待つ時間が長すぎました...自分で問題を解決しました。問題は connect コマンドにありました。

basic_socket に接続コマンドを使用していましたが、接続コマンドは次のようにする必要があります。

socket.connect(*endpoint_iterator,ec); 

現在、正常に動作しています。

于 2012-06-11T11:58:16.980 に答える