Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

サーバー

未使用の TCP/IP ポートで待ち受ける

std-badge cat-net-badge

この例では、ポート番号がコンソールに表示され、プログラムは 要求があるまで待ち受けます。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(())
}