はじめまして。
いきなり本題ですが、素朴な疑問です。
コンピューターの外部と通信しているプログラムが、
相手の応答が微妙なとき、不安定なときに一緒に不安定になってしまうのは
なぜですか?
キャッシュとかスプールとかの一時ファイルを使うものが、それを消そうとしたり
ロックして放さなかったりしてなかなか終わらない というのはなんとなく
理解できるのですが、外部と通信するアプリケーションに
「ちょっとやりたかったけど、やっぱなんかちょっとおそいからやめる。すぐやめる」
「あ、しまった設定ちょっと違った。これちょっと違うやつだった。すぐやり直す」
機能が付いていないのがいつも窮屈です。
(中止ボタンを押しても、実際に最後までやるのと同じくらいまたされたり、
そのまま固まってしまったりしますよね?)
・接続先と「もうやめる」「OK」っていう確認を取るか、プロトコルに設定された
タイムアウトと試行回数が終わるまでは勝手にやめては行けないというルールがあるから
・そのように急にやめる機能が仕様として無いから
・ネットワークが不安定かどうかを判定するのが曖昧で大変なので
とりあえずタイムアウトまでは待つように作ってしまうから
とかそんな感じで教えていただけたらなあと思います。
※プログラミングはVB6,.Net(C#),python でそれぞれLAN内のSQLサーバーに
接続するプログラムをいくつか作成したことがありますが、多くの場合は個人用ツールとか
成果品の隙間プログラムで、ネットワークはかならず安定しているので上記の点については
あまり実感できません。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>・ネットワークが不安定かどうかを判定するのが曖昧で大変なので
> とりあえずタイムアウトまでは待つように作ってしまうから
TCPで接続しているなら、ドライバ側でエラー訂正や再送などの処理をしています。
その上で動いているアプリにとっては、
「データがまだ来ないな~。サーバ側が混んでるのかな~? 途中の回線が細いのかな~?」な状態で、
ただただ待つしかないでしょう。
まぁ、許容できる待ち時間はあるので、それでもダメだったらタイムアウトとして切断するくらいでしょうけど。
回答ありがとうございます。
そう、そこのところ、たとえばうっかりクリックしちゃったものならば
サーバーの応答なんか待つ必要がないので、即中止したいのがユーザーだと思うのですが
そういう機能が無いのが、つけられないのかつけないのかがよく分からなかったのです。
私はたとえばWinsockとかの仕様でつけられないのかな、と思っていたのですが、
今時のコンピューターのパワーなら中断処理をバックグラウンドにして
見た目ユーザーに制御戻すくらいのことはできるんじゃないかなあと思ったです。
(もちろん僕はどうすればいいかもわかりません)
No.1
- 回答日時:
>相手の応答が微妙なとき、不安定なときに一緒に不安定になってしまうのはなぜですか?
「ネットワーク状態が悪いとき(何度もIPレベルでリトライが発生するような状況)に」という情況で不安定になると言うことであれば、プログラムのバグないし考慮不足と言うことになるかと思います。
回答ありがとうございます。
プログラムそのもののバグとか設計ミスならばまあしょうがない
(訳でもないですけど)ですが、たとえばブラウザですごく微妙なリンクを
クリックしてしまったときに、戻る も 中止 も ブラウザを閉じる
もできなくなってしまい、そのまま10秒も20秒も待たされて
カチカチクリックしてみたらしばらくしてバババッっとなんか動いたり
そのまま固まってたりなんてことがあるです。
ユーザーも大抵「そんなもんだ」と思っているのでいちいち文句を言わないですが、
そうならないように作れるならそうならないように作ったら
なんかウリになるんじゃないかなあと思ったですが、マイクロソフトもグーグルも
そうでないということはなんかもう少し低レベルなところでの制限が
あるのかなと思ったのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
UNIX環境でのCプログラム上でC...
-
SNMPトラップ情報をC#.netで作...
-
i,j,k
-
VB.net エラーメッセージを英文...
-
C言語でSMTPを使ったプログ...
-
printf系の書式「w」ってなに?
-
stdio.hのバッファについて。
-
質問
-
大至急!!! ピクトグラミング...
-
VBプログラムをEXCEL VBAに移植...
-
1年無職の彼氏 別れるべきですか?
-
機械工学専攻の院卒でSEになる...
-
ホームページが削除されている...
-
アクセス解析について
-
科学工学技術委員
-
情報処理技術者1種と2種について
-
全豊田作業責任者
-
ftpで「ホストが見つかりません...
-
ExcelとWordの検定の資格について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
SNMPトラップ情報をC#.netで作...
-
C言語のHP-UXからLinuxへのポ...
-
Ryzen 3700(無印)はWin11に対応...
-
VBS:コンピュータ名を取得し、...
-
VB.net エラーメッセージを英文...
-
PHP+MySQLで家計簿を作りたい
-
変数の大きさを超える代入
-
プログラムとは理系ですか文系...
-
OSとCPUの関係について
-
コンソールアプリでファイル選...
-
プログラマーという御仕事(質...
-
Timerイベントについて
-
EXCEL-VBAのプログラムを移植し...
-
Perl5とActivePerl
-
MS-DOSで作ったBASICプログラム...
-
VC++で単機能ブラウザを作...
-
掲示板の作り方を教えてください
-
小中学校でプログラミングなん...
おすすめ情報
回答ありがとうございます。
プログラムそのもののバグとか設計ミスならばまあしょうがない
(訳でもないですけど)ですが、たとえばブラウザですごく微妙なリンクを
クリックしてしまったときに、戻る も 中止 も ブラウザを閉じる
もできなくなってしまい、そのまま10秒も20秒も待たされて
カチカチクリックしてみたらしばらくしてバババッっとなんか動いたり
そのまま固まってたりなんてことがあるです。
ユーザーも大抵「そんなもんだ」と思っているのでいちいち文句を言わないですが、
そうならないように作れるならそうならないように作ったら
なんかウリになるんじゃないかなあと思ったですが、マイクロソフトもグーグルも
そうでないということはなんかもう少し低レベルなところでの制限が
あるのかなと思ったのです。