サーバー
未使用の TCP/IP ポートで待ち受ける
この例では、ポート番号がコンソールに表示され、プログラムは
要求があるまで待ち受けます。TcpListener::bind は、ポート 0 への
バインドが要求された場合、OS によって割り当てられたランダムなポートを使用します。
use std::net::TcpListener;
use std::io::{Read, Error};
fn main() -> Result<(), Error> {
let listener = TcpListener::bind("localhost:0")?;
let port = listener.local_addr()?;
println!("{} で待ち受けています。プログラムを終了するにはこのポートにアクセスしてください", port);
let (mut tcp_stream, addr) = listener.accept()?; //要求があるまでブロックする
println!("接続を受信しました。{:?} がデータを送信しています。", addr);
let mut input = String::new();
let _ = tcp_stream.read_to_string(&mut input)?;
println!("{:?} が {} と言っています", addr, input);
Ok(())
}