- - PR -
JavaAppletのSocketの接続について質問です。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-12-19 18:06
皆さん初めまして。
JavaAppletのSocketの接続について質問です。 JavaAppletからホストではない別のサーバーに対してSocketの接続を試みた際に、 妙に時間がかかってしまう現象が出てしまい現在調査をしています。 EclipseやAppletビューワーでの単体テストでは接続に1秒かからないのですが、 Appletをホストに配置しブラウザで起動させると 接続に10秒ほど時間がかかってしまいます。これは何故なのでしょうか? なおsocketの作成は以下のように行っております。 Socket socket; socket = new Socket(Server,80); お忙しい中恐縮ですが、ご教授よろしくお願いいたします。 |
|
投稿日時: 2007-12-19 20:49
きわめてプレーンでスタンダードなSocket通信が書かれているのであれば、Java側の問題ではなくそのサーバの状況でしょう。
|
|
投稿日時: 2007-12-20 15:55
パケットキャプチャを取得して、どこが遅延しているのか調べてみてはいかがでしょうか。
|
|
投稿日時: 2007-12-20 16:11
アプレットで別のサーバー(アプレットのダウンロード元でない)ということなら、
セキュリティ関係の処理に時間がかかっているのではないですか? |
|
投稿日時: 2007-12-20 17:59
皆さんレスありがとうございます。
>rancoさん 単体テストでは特に問題なく接続が出来たので、サーバーに問題があるとは考えておりませんでした。念のためこちらの調査もしてみます。 >インギさん ありがとうございます。パケットのキャプチャリングはこれまでにしたことが無かったのでこれを機に挑戦してみたいと思います。 >progmanさん セキュリティについてはポリシーファイルを対象のサーバーに対し接続出来るように設定したのですがこの事でしょうか? |
|
投稿日時: 2007-12-21 10:01
>セキュリティについてはポリシーファイルを対象のサーバーに対し接続出来るように設
>定したのですがこの事でしょうか? はい、そうです。 アプレットとしてダウンロード元でないサーバと通信する際は、そのファイルへの アクセスと関連した処理が発生するはずです。 そこに時間がかかっているのではないでしょうか。 それとServerはどのように生成されてますか? 遅くなる場合だけ、なにか違った生成をしてたりしないでしょうか? |
|
投稿日時: 2007-12-21 13:35
すいません、先ほど解決しました。
Socket接続後のパケットのキャプチャリングをしてみたところ、そのSocketの接続先のDNSの解決を行った後に NetBIOSの名前解決の為のパケットが発行されその応答に時間がかかってしまう為に起きた現象のようです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1377232 上記のリンクで紹介されているページを参考にしてSocketの接続を行うクラスに import java.net.ProxySelector; ProxySelector.setDefault(null); を追加してみたところ単体テスト時とほぼ同じ速度でSocketの接続が出来るようになりました。 |
1