Rust标准库是否支持无端口的域名解析为IpAddr?
Rust标准库中仅解析域名(无需端口)的方案
Rust标准库没有直接提供仅解析域名且无需指定端口的专属函数,但可以通过两种实用方式实现需求:
用占位端口调用
to_socket_addrs再提取IPto_socket_addrs要求端口只是格式上的要求,实际域名解析过程不会受端口值影响。你可以随便用一个合法端口(比如0)作为占位,之后从返回的SocketAddr中提取IpAddr部分即可。示例代码:use std::net::{IpAddr, ToSocketAddrs}; fn resolve_domain(domain: &str) -> Option<IpAddr> { domain.to_socket_addrs() .ok()? .next()? .ip() }该方法会返回域名对应的所有IP地址(包含IPv4和IPv6),你可以取第一个结果,也可以遍历处理所有解析出的IP。
使用
lookup_host函数(Rust 1.66及以上版本)
Rust 1.66版本新增的std::net::lookup_host专门用于主机名解析,支持直接传入不带端口的域名字符串,返回IpAddr的迭代器,完全符合你的场景。示例代码:use std::net::lookup_host; fn resolve_domain(domain: &str) -> Option<std::net::IpAddr> { lookup_host(domain) .ok()? .next()? }
拿到IpAddr后,直接传入需要该类型参数的库函数即可,完全满足ICMP请求的无端口需求。
内容的提问来源于stack exchange,提问作者t-mart
相关产品推荐
相关产品推荐

