- - PR -
MTU, RWIN 等のパケット通信の値を取得するには?
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-11-19 23:00
いつもお世話になっております。
アレクでございます。 Java でパケット通信関連の値を得るにはどうすればいいのでしょうか。 MTU や RWIN の値を Java で取得したいと思い、検索をかけてみたのですが、実際的な方法は出てきませんでした。 もしかして、Java じゃ無理!? むむっ、そんなわけないはずじゃ。 しかしどうすればいいんだろう。 たびたび申し訳ありませんが、どなたかご教授いただけないでしょうか? | ||||
|
投稿日時: 2002-11-20 01:50
そんなことって出来るんですか?出来たらびっくり。
「ネイティブで記述する」っていう落ちだと思うんですが… そうでもないのかなぁ。 | ||||
|
投稿日時: 2002-11-20 17:41
う〜ん。やっぱり難しいのかな〜?
具体的には、ユーザがサイト上であるボタンを押すと、 そのユーザの MTU, RWIN 値を取得し、 それをそのまま、サイト上で表示するというものを作りたいのですが・・・。 Java 以外でもどんな方法でも良いのですが、これって可能でしょうか? (ネイティブはちょっと無理・・・ | ||||
|
投稿日時: 2002-11-20 20:48
難しい云々ではなくて、JDK の API と JVM のスペックを見て、そいういう方法がなければない、というだけです。
探してませんが、ないでしょうね。そんな raw な部分を隠したいがための Java なんですから。 そもそも、それはユーザのマシン上でなんらかの(OS に依存する)コマンドを実行、もしくは OS 依存の情報を取得しなければなりませんから、そういうことのできる方法、ActiveX のようなものなりを使うべきです。 # .NET だったらできたりするのかしらん。 | ||||
|
投稿日時: 2002-11-21 13:33
Socket.getReceiveBufferSize() は MTU と同一の値を返すのでしょうか?
あと、InputStream.read(byte[]) を使い、実際に何バイト読めたかで、 MTU の値を逆算できるのではないでしょうか。 RWIN はどうやるのだろう... | ||||
|
投稿日時: 2002-11-21 22:50
yu さん、ありがとうございます。
この分野に関しては経験がないので全くよく分からないのですが、Socket.getReceiveBufferSize() は RWIN 値を返すのではないでしょうか? 違うのかな?よく分からん。 MTU 値に関しては、InputStream.read(byte[]) で逆算ということでしたが、 具体的にどうすればいいのでしょうか? また、MTU 値は ping -f -l バイト数 コマンドで、 Packet needs to be fragmented but DF set エラーが出るまで バイト数を上げていくことによって、取得できるようですが、 これって、ユーザ個人の MTU 値の設定とプロバイダの設定値を 両方とも取得することが出来るのでしょうか? | ||||
|
投稿日時: 2002-11-23 01:24
Socket.getReceiveBufferSize() は RWIN 値というよりも、ソケットI/Oが使用しているバッファのサイズが返されるだけで、windowサイズが返されるわけではないと思います。Linuxならnet.core.optmem_maxで最大値が規定さているソケットI/Oインタフェースに対するメッセージの補助バッファのサイズが返されるだけではないでしょうか? 多分、10KBぐらいの値が返されるのではないかと予想するのですが・・・。
| ||||
|
投稿日時: 2002-11-23 12:28
MyTime さん、ありがとうございます。 私は、windows2000 で実験したのですが、8192 という値が返ってきます。 RWIN 値は Win95/98/98SE/NT では、デフォルトで 8192(Bytes)となっている と書いてあったので、てっきり RWIN 値を取得できたものと思っていました。 やっぱり違うんですかね? また、RWIN 値を取得する際にはどうすればよいのでしょうか? | ||||
