タイマーイベント
ネットワークプログラミングに悪戦苦闘中。
サーバープログラムがLANの物理切断を認識してくれないので、
タイマーイベントを使って、pingを一定時間飛ばし続け、失敗したら
クライアント切断でうまくいった!
/// <summary> /// 指定した時間でタイマーを開始する /// </summary> /// <param name="intInterval">指定時間(ミリ秒)</param> private void SettingTimer(int intInterval) { timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(ConnectCheckTimer); timer.Interval = intInterval; timer.AutoReset = true; timer.Enabled = false; } /// <summary> /// 接続確認タイマー /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ConnectCheckTimer(object sender, ElapsedEventArgs e) { try { System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping(); System.Net.NetworkInformation.PingReply reply; reply = p.Send(ipClient.ToString()); //pingを送信して、接続を維持しているか確認。 if (reply.Status != System.Net.NetworkInformation.IPStatus.Success) { timer.Stop(); //切断しているので、ストリームを強制クローズ。 ns.Close(); } } catch (Exception ex) { this.FrmParent.Invoke(new dlgSetLog(FrmParent.SetLogText), "接続確認エラー:"+ ex.Message); } }