必要があって
TCP ソケット通信
を久しぶりに書く必要に迫られています。
最近の僕の仕事状況を何となく知っている人は「ああ、こんな感じで使うのね」と想像できるかと思います。
久しぶりではありますが .NET で書くのは初めてです。
private readonly int port = 12345;
private TcpListener listener;
public void HogeHoge() {
this.listener = new TcpListener(IPAddress.Any, this.port);
this.listener.Start();
var client = this.listener.AcceptTcpClient(); // ここで待つ・・・
var ns = client.GetStream(); //クライアントとの間の通信につかうストリームを取得
var reader = new StreamReader(ns);
var writer = new StreamWriter(ns);
// 後は reader と writer をつかってゴニョゴニョすれば良いらしい
}
便利ですね。
待ち受けポートから実際に通信するポートへの移行などを自分で書かなくて良いみたいです。
しかし AcceptTcpClient() メソッドで通信が来るまで処理が停止します。
イベントを発行する形がわかりやすそうですね。
早速、別スレッドで待ち受けてイベント発生させるように書き換えようと思います。