004 Rust 網路程式設計,使用 SocketAddr

linghuyichong發表於2020-04-25

SocketAddr定義如下:

pub enum SocketAddr {
    V4(SocketAddrV4),
    V6(SocketAddrV6),
}

SocketAddr中提供了一些方法,使用如下:

use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};

fn main() {
    let mut socket = 
        SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
        assert_eq!("127.0.0.1:8080".parse(), Ok(socket));
    let socket_v6 = 
        SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 0, 1)), 8080);


    //返回IP
    assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));

    //設定IP:修改socketAddr對應的Ip
    socket.set_ip(IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));
    assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));

    //返回埠
    assert_eq!(socket.port(), 8080);

    // 設定埠:修改socketAddr對應的埠
    socket.set_port(1025);
    assert_eq!(socket.port(), 1025);


    // 判斷是否為ipv4
    assert_eq!(socket.is_ipv4(), true);
    assert_eq!(socket_v6.is_ipv4(), false);

    // 判斷是否為ipv6
    assert_eq!(socket.is_ipv6(), false);
    assert_eq!(socket_v6.is_ipv6(), true);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章