C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 38 を表示中)
■19836 / )  Re[3]: TCP/IP通信の送信メソッドでエラー検知できませんか?
□投稿者/ はつね (760回)-(2008/05/30(Fri) 19:12:34)
はつね さんの Web サイト
No19830 (夢若 さん) に返信
> >>今回、非同期TCP/IP通信にてデータを送受信するプログラムを組みました。
>>(中略)
> >>私のやりたい事はSocket.NetworkStream().Write()メソッドにて
> >>送信処理をした所で切断を検知したい(LANが抜けているので送信できない=切断)のですが
> >>なにか良い方法はあるでしょうか?
>>
>>非同期だとしたら無理。
>>
> そうですか。回答有難う御座います。
> 同期だと出来ると言う事でしょうか?

http://msdn.microsoft.com/ja-jp/library/bbx2eya8(VS.80).aspx
ここに「非同期クライアント ソケットでは、ネットワーク操作の完了までアプリケーション
の実行が中断される、ということはありません。」と明記されているように、非同期のとき
は、完了まで待たずに(つまりエラーを検出まで待たずに)次のステップに実行が移り、
同期だったら、完了をまってから次のステップに進みます。

しかし、同期であれば大抵の場合タイムアウトまで待ってからエラーで返却されてくるので
エラーがその行で検出できますが、TCP/IP的には必ずしもすべてが検出できるとは限らない
はず。


> をやりたいかと言うと、送信できなかった際に相手(サーバ側)のエラーなのか、こちら
> (クライアント側)のエラーなのかの切り分けがしたいのです。

相手からdisconnectされたのならば分かりますが、通常の切断シーケンスとして検出でき
ますが、LANケーブル切断は相手側なのかこちら側なのかは分からないと思いませんか?
だって、途中のLANケーブルがはずれたときって、相手でもなく自分でもないですよね?
分かるのは、どこかで通信経路が切断されていて、迂回経路もないって事だけ。


返信 編集キー/


管理者用

- Child Tree -