7. boost asio チュートリアル --- さらなる学習

次のレッスンでは、より大きなサーバーの例である TCP チャット サーバーを検討します。その部分に入る前に、まず新しいことを学ぶ必要があります。

ソケットについて新たに知っておくべきことは、接続の両側でそのエンドポイントをリクエストできることです。

boost::asio::ip::tcp::endpoint endpoint;
endpoint = socket.local_endpoint(); // 本地连接端的IP和端口
endpoint = socket.remote_endpoint(); // 远程连接端的IP和端口

これらの関数は例外をスローする可能性があることに注意してください。例外を処理したくない場合は、戻り値のオーバーロードを使用できます。

boost::system:error_code error;
auto endpoint = socket.remote_endpoint(error);

「エンドポイント」は iostream で使用できます。

boost::system:error_code error;
auto endpoint = socket.remote_endpoint(error);
std::cout << "Remote endpoint: " << endpoint << "\n";
Remote endpoint: 127.0.0.1:38529

場合によっては、以前にスケジュールされた非同期操作をキャンセルする必要があることがあります。信頼性が高く移植可能な唯一の方法は、関連付けられたソケットを閉じることです。

boost::asio::async_read(socket, buff

おすすめ

転載: blog.csdn.net/Knowledgebase/article/details/132860567