あなたの習慣について教えてください!!

はじめまして。

いきなり本題ですが、素朴な疑問です。
コンピューターの外部と通信しているプログラムが、
相手の応答が微妙なとき、不安定なときに一緒に不安定になってしまうのは
なぜですか?

キャッシュとかスプールとかの一時ファイルを使うものが、それを消そうとしたり
ロックして放さなかったりしてなかなか終わらない というのはなんとなく
理解できるのですが、外部と通信するアプリケーションに
「ちょっとやりたかったけど、やっぱなんかちょっとおそいからやめる。すぐやめる」
「あ、しまった設定ちょっと違った。これちょっと違うやつだった。すぐやり直す」
機能が付いていないのがいつも窮屈です。
(中止ボタンを押しても、実際に最後までやるのと同じくらいまたされたり、
そのまま固まってしまったりしますよね?)

・接続先と「もうやめる」「OK」っていう確認を取るか、プロトコルに設定された
 タイムアウトと試行回数が終わるまでは勝手にやめては行けないというルールがあるから
・そのように急にやめる機能が仕様として無いから
・ネットワークが不安定かどうかを判定するのが曖昧で大変なので
 とりあえずタイムアウトまでは待つように作ってしまうから

とかそんな感じで教えていただけたらなあと思います。

※プログラミングはVB6,.Net(C#),python でそれぞれLAN内のSQLサーバーに
 接続するプログラムをいくつか作成したことがありますが、多くの場合は個人用ツールとか
 成果品の隙間プログラムで、ネットワークはかならず安定しているので上記の点については
 あまり実感できません。

質問者からの補足コメント

  • 回答ありがとうございます。
    プログラムそのもののバグとか設計ミスならばまあしょうがない
    (訳でもないですけど)ですが、たとえばブラウザですごく微妙なリンクを
    クリックしてしまったときに、戻る も 中止 も ブラウザを閉じる
    もできなくなってしまい、そのまま10秒も20秒も待たされて
    カチカチクリックしてみたらしばらくしてバババッっとなんか動いたり
    そのまま固まってたりなんてことがあるです。
    ユーザーも大抵「そんなもんだ」と思っているのでいちいち文句を言わないですが、
    そうならないように作れるならそうならないように作ったら
    なんかウリになるんじゃないかなあと思ったですが、マイクロソフトもグーグルも
    そうでないということはなんかもう少し低レベルなところでの制限が
    あるのかなと思ったのです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/06/29 22:00

A 回答 (2件)

>・ネットワークが不安定かどうかを判定するのが曖昧で大変なので


> とりあえずタイムアウトまでは待つように作ってしまうから

TCPで接続しているなら、ドライバ側でエラー訂正や再送などの処理をしています。
その上で動いているアプリにとっては、
「データがまだ来ないな~。サーバ側が混んでるのかな~? 途中の回線が細いのかな~?」な状態で、
ただただ待つしかないでしょう。
まぁ、許容できる待ち時間はあるので、それでもダメだったらタイムアウトとして切断するくらいでしょうけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

そう、そこのところ、たとえばうっかりクリックしちゃったものならば
サーバーの応答なんか待つ必要がないので、即中止したいのがユーザーだと思うのですが
そういう機能が無いのが、つけられないのかつけないのかがよく分からなかったのです。
私はたとえばWinsockとかの仕様でつけられないのかな、と思っていたのですが、
今時のコンピューターのパワーなら中断処理をバックグラウンドにして
見た目ユーザーに制御戻すくらいのことはできるんじゃないかなあと思ったです。
(もちろん僕はどうすればいいかもわかりません)

お礼日時:2015/06/29 22:10

>相手の応答が微妙なとき、不安定なときに一緒に不安定になってしまうのはなぜですか?



「ネットワーク状態が悪いとき(何度もIPレベルでリトライが発生するような状況)に」という情況で不安定になると言うことであれば、プログラムのバグないし考慮不足と言うことになるかと思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
プログラムそのもののバグとか設計ミスならばまあしょうがない
(訳でもないですけど)ですが、たとえばブラウザですごく微妙なリンクを
クリックしてしまったときに、戻る も 中止 も ブラウザを閉じる
もできなくなってしまい、そのまま10秒も20秒も待たされて
カチカチクリックしてみたらしばらくしてバババッっとなんか動いたり
そのまま固まってたりなんてことがあるです。
ユーザーも大抵「そんなもんだ」と思っているのでいちいち文句を言わないですが、
そうならないように作れるならそうならないように作ったら
なんかウリになるんじゃないかなあと思ったですが、マイクロソフトもグーグルも
そうでないということはなんかもう少し低レベルなところでの制限が
あるのかなと思ったのです。

お礼日時:2015/06/29 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!