関数recv_from()
を呼び出すと、(長さ、SocketAddr
)タプルが返されます。この列挙型にはIPアドレスをバイト配列として抽出するメソッドはありませんが、ip()
関数で取得できるIpAddr
列挙型は含まれています。 IpAddr
には、Ipv4Addr
またはIpv6Addr
構造体が含まれています。これには、octets()
という機能があり、私の必要とするものとまったく同じです。 SocketAddr
からこれにアクセスできますか?RustのSockAddrからIPアドレスのバイト表現を取得する方法は?
0
A
答えて
3
はい、できますが、最終的には、アドレスがv4またはv6である可能性があることを考慮する必要があり、パターンマッチングを使用してそれに応じて処理する必要があります。基本的には:例えば
match sa.ip() {
IpAddr::V4(ip) => /* something with ip.octets() which is a [u8; 4] */,
IpAddr::V6(ip) => /* something with ip.octets() which is a [u8; 16] */,
}
あなたは将来、非友好的になりたいと思った場合、あなたは可能性が
let octets = match sa.ip() {
IpAddr::V4(ip) => Ok(ip.octets()),
_ => Err("Not an IPv4 Address"),
};
v4のアドレスのための成功した結果を返しますが、V6のものにエラー。私は本当に錆を知っていませんが、それは2つのケースの戻り値の間の型格差を処理する唯一の本当に正しい方法のように見えます。あなた自身の列挙型で結果をラップするか、適切なパターンマッチの中でオクテットを操作する。私はこのようなルックスを使用して終了
0
ソリューション:
let ip_bytes = match addr.ip() {
IpAddr::V4(ip) => ip.octets().to_vec(),
IpAddr::V6(ip) => ip.octets().to_vec(),
};
関連する問題
- 1. RustからマシンのIPアドレスのリストを取得する方法は?
- 2. IPアドレスの取得方法
- 3. アプリケーション内から現在のIPアドレスを取得する(VC++ 2005)
- 4. C#、TcpClientからIPアドレスを取得する方法は?
- 5. RustのWindowsファイルハンドルからバイトを読み取る方法は?
- 6. C#のFTPリクエストからIPアドレスを取得する方法
- 7. JavaのHTTPヘッダーからIPアドレスを取得する方法
- 8. PythonのpingからIPアドレスを取得する方法
- 9. AndroidでプログラムでMacアドレスからIPアドレスを取得する方法は?
- 10. ソケットからIPアドレスを取得する方法Windowsで
- 11. フォームメーラからIPアドレスを取得する方法
- 12. クライアントIPアドレスをブラウザから取得する方法(タイプスクリプト)
- 13. ホスト名/ IPアドレスのCNAME取得方法
- 14. は、IPアドレスから離れて現在位置を取得する他の方法は何ですか?
- 15. サーバ側から既知のMACアドレスからIPアドレスを取得
- 16. beautifulsoupと正規表現を使用してプロキシWebサイトからIPアドレスを取得する方法
- 17. 他のモバイルデバイスのIPアドレスを取得する方法は?
- 18. Javaでクライアントの元のIPアドレスを取得する方法は?
- 19. Rustのベクトルからリファレンスのスライスを取得する方法は?
- 20. 複数のIPアドレスからホスト名を取得する方法は? Java
- 21. WLANのIPアドレスを取得する方法は?
- 22. JavaScriptでクライアントのIPアドレスを取得する方法は?
- 23. asp.netコアでリモートクライアントのIPアドレスを取得する方法は?
- 24. WindowsシステムのローカルIPアドレスを取得する方法は?
- 25. クライアント/ユーザのIPアドレスを取得する方法は?
- 26. LaravelでユーザーのIPアドレスを取得する方法は?
- 27. クライアントのIPアドレスを取得する方法は?
- 28. boto3:CloudFormationスタックインスタンスのIPアドレスを取得する方法は?
- 29. アンドロイドでIPアドレスのホスト名を取得する方法は?
- 30. AndroidエミュレータのIPアドレスを取得する方法は?
これはまさに私が必要なものである、ありがとう!私は、結果をベクトルにキャストすることによって、結果の不一致に対する一種のハックな解決策を考え出しました。私の場合、IPがv4かv6かどうかはすでに分かっています。 – JohnF