動作環境
Windows 8.1 Pro (64bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2
概要
TCPクライアントソフトにて、下記の処理を行う。
- サーバーに接続
- コマンドを送信
- 応答を受信
- サーバーと切断
3の処理において、応答がない場合のエラー処理を検討した。
エラー処理
以下のような処理となるようだ。
private void ReceiveData(NetworkStream netStream)
{
// 1. rcvdは<CR><LF>付き
byte[] ReceiveBytes = new byte[1024];
string rcvd = string.Empty;
try
{
int BytesReceived = netStream.Read(ReceiveBytes, 0, ReceiveBytes.Length);
rcvd = Encoding.ASCII.GetString(ReceiveBytes, 0, BytesReceived);
}
catch(IOException exc)
{
if (exc.HResult == -2146232800) // Timeout
{
// TODO: エラー処理
// MessageBox.Show("応答がありません");
}
}
// 正常受信処理 (後略)
- IOException excでエラーをとらえる
- HResultが
-2146232800
の場合は受信失敗
-2146232800
はマジックナンバーでない方がいいが、具体的に定義している情報は見つかっていない。
関連
-
Streaming input to System.Speech.Recognition.SpeechRecognitionEngine
- マジックナンバーでエラーキャッチしている
-
web client losing connections
- スタックトーレスの情報