diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client_main.rs | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/client_main.rs b/src/client_main.rs index e7d1a2d..3e0a436 100644 --- a/src/client_main.rs +++ b/src/client_main.rs @@ -31,7 +31,7 @@ pub mod world; use clap::{App, Arg}; use server::DEFAULT_PORT; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, ToSocketAddrs}; fn main() { pretty_env_logger::init(); @@ -70,24 +70,6 @@ fn main() { } }; - let server_address = match matches.value_of("connect") { - None => { - // Local server will be started. - if use_ipv4 { - IpAddr::V4(Ipv4Addr::LOCALHOST) - } else { - IpAddr::V6(Ipv6Addr::LOCALHOST) - } - } - Some(addr) => { - if use_ipv4 { - IpAddr::V4(dbg!(addr).parse().expect("Not a valid IPv4 address")) - } else { - IpAddr::V6(dbg!(addr).parse().expect("Not a valid IPv6 address")) - } - } - }; - let server_handle = if !matches.is_present("connect") { Some({ let (server_handle, port) = @@ -99,7 +81,23 @@ fn main() { None }; - client::run(SocketAddr::new(server_address, server_port)); + let server_address = match matches.value_of("connect") { + None => { + // Local server will be started. + if use_ipv4 { + SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), server_port) + } else { + SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), server_port) + } + } + Some(addr) => (addr, server_port) + .to_socket_addrs() + .expect("Not a valid address") + .next() + .expect("Hostname not registered."), + }; + + client::run(server_address); if let Some(handle) = server_handle { handle.join().expect("Server thread closed unexpectedly."); |
