Convert String to SocketAddr

后端 未结 2 1248
不知归路
不知归路 2021-02-12 22:50

In versions of Rust before 1.0, I was able to use from_str() to convert a String to SocketAddr, but that function no longer exists. How ca

2条回答
  •  终归单人心
    2021-02-12 23:05

    from_str was renamed to parse and is now a method you can call on strings:

    use std::net::SocketAddr;
    
    fn main() {
        let server_details = "127.0.0.1:80";
        let server: SocketAddr = server_details
            .parse()
            .expect("Unable to parse socket address");
        println!("{:?}", server);
    }
    

    If you'd like to be able to resolve DNS entries to IPv{4,6} addresses, you may want to use ToSocketAddrs:

    use std::net::{TcpStream, ToSocketAddrs};
    
    fn main() {
        let server_details = "stackoverflow.com:80";
        let server: Vec<_> = server_details
            .to_socket_addrs()
            .expect("Unable to resolve domain")
            .collect();
        println!("{:?}", server);
    
        // Even easier, if you want to connect right away:
        TcpStream::connect(server_details).expect("Unable to connect to server");
    }
    

    to_socket_addrs returns an iterator as a single DNS entry can expand to multiple IP addresses! Note that this code won't work in the playground as network access is disabled there; you'll need to try it out locally.

提交回复
热议问题