protected TcpListener _tcpListener;


// TCPリスナーを生成する
_tcpListener = new TcpListener(ip, portnb);

// TCPリスナーを開く
_tcpListener.Start();

// 保留中の接続要求があるかどうかを確認する
if (_tcpListener.Pending() == true)
{
// クライアントからの接続要求を受け入れる
_tcpClient = _tcpListener.AcceptTcpClient();

// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);
}

上記のようにサーバー側でクライアントの接続を受け入れて
TCPにて伝文の送受信を行っています。

中継装置(HUB)を経由して接続している時、クライアントのLANケーブル
が抜けた(切断)されたことを検出する為、KeepAliveの機能を用いる
方向で実装していますが・・・検出できませんでした。
おそらくKeepAliveの使い方が悪いと思うのですが・・・どなたかご存知ないでしょうか?