System.Net.Sockets.Socketクラスには、ReceiveTimeoutというプロパティが存在する。
Receive開始から指定時間受信データが無いと例外を吐いてくれるらしい。
※この例外が必ずしも出るとは限らないみたいなのと他のと同じSocketExceptionで、困るのはまた別の話。
で、Socket作成して、プロパティ設定して・・・でOKだと思うのが普通。
しかし、このプロパティ、どうやら一度でもタイムアウトを発生してしまうと、0値扱いになるらしく、受信が即終了してしまうことになる。
つまり、タイムアウトをやりたければ、受信前には必ず設定しなきゃならんってことらしい。
多分送信も同じ。
であれば、メソッド呼び出しにタイムアウト値引数を取れるようにしておいて欲しいなって思う。