diff --git a/src/lib.rs b/src/lib.rs index a13716b..996ef3c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,7 @@ mod utils; use std::{sync::atomic::AtomicU8, time::Duration}; -use std::net::SocketAddr; +use std::net::{SocketAddr, ToSocketAddrs}; pub use network::get_edge; use network::{async_main, init_edge, NodeConfig}; @@ -52,11 +52,18 @@ async fn parse_config(uuid: String, args: &CommandLine) -> Result { } // node_conf.allow_p2p = args.allow_p2p; - let Ok(nat1) = args.nat_server1.parse::() else { - return Err(SDLanError::NormalError("failed to parse nat server1")); + let Ok(addr1) = args.nat_server1.to_socket_addrs() else { + return Err(SDLanError::NormalError("nat_server1 format error")); }; - let Ok(nat2) = args.nat_server2.parse::() else { - return Err(SDLanError::NormalError("failed to parse nat server2")); + let Some(nat1) = addr1.into_iter().next() else { + return Err(SDLanError::NormalError("get nat_server1 failed")); + }; + + let Ok(addr2) = args.nat_server2.to_socket_addrs() else { + return Err(SDLanError::NormalError("nat_server2 format error")); + }; + let Some(nat2) = addr2.into_iter().next() else { + return Err(SDLanError::NormalError("get nat_server2 failed")); }; let sns: Vec<&str> = args.sn.split(",").collect();