URLクラスでインターネットアクセスするときに、以下のようにプログラムする場合、望ましいBUFSIZEはあるのでしょうか。
inputstream.read(byte_buf,offset,BUFSIZE)
A
プログラマーは任意のバッファサイズを指定して、なんら問題はない。
仮に1であっても、実際はJavaのほうでネットアクセスするに最適なサイズでアクセスし、そこから1バイトずつくれるので問題はない。同様にして、メモリの許す限りに大きいバッファサイズも問題はない。
B
Javaはコーディングどおりに、サーバーに1バイトを要求するので、ファイルダウンロードする方法としてとんでもないことだ。同様にして、一度に何十メガバイトもの指定もとんでもないことだ。
AとBで、どちらが正しいでしょうか。Bならば、のぞましいバッファサイズと、その根拠を教えてください。通常、ダウンロードするときのネットマナーみたいなものはあるのでしょうか。
No.1ベストアンサー
- 回答日時:
> AとBで、どちらが正しいでしょうか。
どちらかというと、Aです。
> Javaはコーディングどおりに、サーバーに1バイトを要求する
というふうには socket (ネットワークの仕組み)は動作しません。
> 実際はJavaのほうでネットアクセスするに最適なサイズでアクセスし
じゃないんです。
送り手と受け手がいて、送り手は勝手に好きなサイズを送る。socket は、適当な
サイズにばらして送信する(こともある)。受け手は、送られてきたデータをその
まま受取る。
こんな感じで動作します。
# 実際には、受診確認があったり、なかったりと細かいことはありますが。
つまり、受ける側では、実際に送られてくるデータのサイズをコントロールできません。
InputStream は、内部にバッファを持ってます。ここには、送ってこられたデータ
そのものが入ると考えて下さい。
read() メソッドで指定する「バッファ」には、その内部のバッファから、指定された
サイズのデータだけを(内部のバッファが空になるまで)コピーされます。もし、
内部のバッファが空になって、read() メソッドが指定するサイズに達していなければ、
ネットワークからデータを読み込んで、内部のバッファにため込んで、メソッドの引数に
コピーをする、ということを繰返します。
どうもありがとうございました。
socketなるものが介在し、(送り手側の意向にそって)適当なサイズで送信されるのですね。了解しましたー。BUFSIZEの値によっては、トラフィックを増大させたり、占有したりするのではという懸念は払拭されましたー。
送り手の選択する勝手な好きなサイズに、BUFSIZEの値は全く影響を与えない仕組みなのですね。ネットアクセスマナーもsocketまわりの人の問題ですね。
送り手の選択する勝手な好きなサイズとsocketの選択する適当なサイズの常識的な値や、頭10バイトのデータがほしいだけにもかかわらず、送り手側はファイルの全データ分(数十メガ?)を送りつけてくる可能性とかも聞きたくなっちゃうけど、きりないのでやめときます。(^o^)
別の見方があるかもしれないので、しばらくしてから締めまーす。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- 中学校 比の文章題 2 2022/08/28 02:49
- C言語・C++・C# C言語について。 7 2023/01/26 16:42
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- C言語・C++・C# C言語について。 7 2022/11/06 10:02
- デジタルカメラ 画像ファイルのサイズを理解する方法についてお教えください。 3 2022/09/18 12:54
- C言語・C++・C# C言語について。 7 2023/01/01 09:58
- C言語・C++・C# C言語について 4 2023/01/08 06:07
- Windows 10 だいたいの能力はどのくらいでしょうか 3 2023/03/05 17:18
- デジタルカメラ Googleフォトで画像を自動補正すると何故サイズが小さくなるのでしょうか? 4 2022/09/19 13:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列にnullを代入すると、null...
-
プログラミングの問題です。大...
-
問題作成のWebアプリの作り方を...
-
eclipseで作ったプログラムを他...
-
eclipse実行ができない
-
Processingでマウスクリックで...
-
JAの支部?地域の農協のカード...
-
正規表現について質問です。 カ...
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
キー入力について
-
jdk17.06のインストーラーが起...
-
JSFタグのfタグとは
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について。
-
C言語について。
-
C言語について。
-
C言語について。
-
サーブレットからパラメータをP...
-
includeアクションのflush属性...
-
JSPでリンクを利用してパラ...
-
submitとは?
-
Struts2でのスタイルシート利用...
-
getElementsByTagNameのタグの...
-
iframeのsrc属性で指定したサー...
-
Spreadの行数取得
-
HTML フォームデータの送信先
-
UserForm
-
ワイルドスピードのドミニクト...
-
これ絶対に見たほうがいいって...
-
映画の撮影
-
オススメのAV女優は誰ですか?
-
リベリオンのガン・カタについて
-
ドラゴンボールでいう1000年に...
おすすめ情報