extern crate asyncio;
use std::process::exit;
use std::str;
use asyncio::*;
use asyncio::ip::*;

fn main() {
    let host = args().nth(1).unwrap_or_else(|| {
        println!("usage: client <host>");
        exit(1);
    });

    let ctx = &IoContext::new().unwrap();

    let ep = UdpResolver::new(ctx)
        .resolve((Udp::v4(), host, "daytime"))
        .unwrap()
        .next()
        .unwrap();

    let soc = UdpSocket::new(ctx, ep.protocol()).unwrap();

    let send_buf = [0];
    soc.send_to(&send_buf, 0, &ep).unwrap();

    let mut recv_buf = [0; 128];
    let (len, ep) = soc.receive_from(&mut recv_buf, 0).unwrap();
    println!("receive from {}", ep);

    println!("{}", str::from_utf8(&recv_buf[..len]).unwrap());
}

use std::env::args;