■19836 / ) |
Re[3]: TCP/IP通信の送信メソッドでエラー検知できませんか? |
□投稿者/ はつね (760回)-(2008/05/30(Fri) 19:12:34)
|
■No19830 (夢若 さん) に返信 > >>今回、非同期TCP/IP通信にてデータを送受信するプログラムを組みました。 >>(中略) > >>私のやりたい事はSocket.NetworkStream().Write()メソッドにて > >>送信処理をした所で切断を検知したい(LANが抜けているので送信できない=切断)のですが > >>なにか良い方法はあるでしょうか? >> >>非同期だとしたら無理。 >> > そうですか。回答有難う御座います。 > 同期だと出来ると言う事でしょうか?
http://msdn.microsoft.com/ja-jp/library/bbx2eya8(VS.80).aspx ここに「非同期クライアント ソケットでは、ネットワーク操作の完了までアプリケーション の実行が中断される、ということはありません。」と明記されているように、非同期のとき は、完了まで待たずに(つまりエラーを検出まで待たずに)次のステップに実行が移り、 同期だったら、完了をまってから次のステップに進みます。
しかし、同期であれば大抵の場合タイムアウトまで待ってからエラーで返却されてくるので エラーがその行で検出できますが、TCP/IP的には必ずしもすべてが検出できるとは限らない はず。
> をやりたいかと言うと、送信できなかった際に相手(サーバ側)のエラーなのか、こちら > (クライアント側)のエラーなのかの切り分けがしたいのです。
相手からdisconnectされたのならば分かりますが、通常の切断シーケンスとして検出でき ますが、LANケーブル切断は相手側なのかこちら側なのかは分からないと思いませんか? だって、途中のLANケーブルがはずれたときって、相手でもなく自分でもないですよね? 分かるのは、どこかで通信経路が切断されていて、迂回経路もないって事だけ。
|
|