• ベストアンサー

「javaプログラムについて」

javaプログラムでURLをスレッドを作って、たくさん読み込むと、 「address already in use: connect java」というエラーがでます。なぜでしょうか? 宜しくお願い致します。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 javaに限らず、TCP/IPでよそに接続する場合、クライアント側にもポート番号が必要になる。これは分かるな? で、OSによっても違いがあるが、一つのプログラムで利用できる(システムから提供される)ポート番号には数に限りがある方が普通だと考えられる。その数の具体的な調整方法などは分からんが、やはりプログラム側でソケット数を制御してあげるほうが良いのではと思う。  具体的には、URLクラスをVectorなどでプールにして、プール以上の同時接続をする場合はエラーを返すまたはブロックするなどの制御を組み込んであげよう。この場合、プールの中からサーバのアドレスだけ書き換えて再利用しようとしても、KeepAliveが邪魔をしてクライアントポート番号を開放していない可能性もあるので、意図的にクローズしてやるなどの細かな制御が必要だろう。

mizuki_ff
質問者

お礼

回答いただきありがとうございます。 正直、何を言っているのかさっぱりですが、とりあえず、一度にたくさん接続すると、エラーが出るということですね。 もう少し、クローズの仕方などいろいろ、調べてみます。 ありがとうございました。

関連するQ&A

  • 「プログラミング」JAVAのエラーが解決できません 2

    「「「プログラミング」JAVAのエラーが解決できません」」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1038426 の質問で作っているプログラムの続きです。 無事に、ひとつエラーが解決したので新たにこちらへ質問をさせていただきました。 ソースデータは、#5の補足をご覧ください。 今は、長時間動かしていると、 【Address already in use: connect】 というエラーがでます。100%再現性があるわけではないのですが時々出ます。 どのようにすると解決するのか分かる方折られないでしょうか?なにとぞ、宜しくお願い致します。

    • ベストアンサー
    • Java
  • 「プログラミング」JAVAのエラーが解決できません。

    ホームページを見たり、メールチェックをしたり、数分間このプログラムを走らせると、 Address already in use: connect java や Connection refused: connect といったエラーメッセージが出ます。 どうすれば、解決するでしょうか? やさしいJAVAやインターネットで調べたのですが良い方法が分かりません。ぜひ、ご教示宜しくお願い致します。 import java.net.*; import java.io.*; import java.util.*; import java.text.*; class Test { public static void main(String[] args) throws Exception { String helloURL; for(int a=1; a<3000; a++) { helloURL = "http://shopping.yahoo.co.jp/"; Th th1 = new Th(helloURL); th1.start(); Thread.sleep(100); } } } class Th extends Thread { String helloURL = null; String line; Th(String str) { this.helloURL = str; } public void run() { try { URL url = new URL(helloURL); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while ((line = in.readLine()) != null) { try { OutputStream os = new FileOutputStream("log.txt",true); BufferedWriter fr = new BufferedWriter(new OutputStreamWriter(os)); if(line.indexOf("ヤフー") != -1) { fr.write(line); } if(line.indexOf("あ") != -1) { fr.write(line); } fr.close(); os.close(); } catch(Exception e){System.out.println("エラー1 : "+e.getMessage());} } in.close(); } catch(Exception ex){System.out.println("エラー2 : "+ex.getMessage());} } }

    • ベストアンサー
    • Java
  • javaのsslプログラムについて質問です

    以下のサイトにありますjavaのプログラムを実行したいのですが https://github.com/Kanatoko/POODLE 実行環境はどのようなものを想定しているプログラムなのでしょうか 実際にローカルにssl3.0のサーバを立ててその環境で実行するプログラムなのか JDKなどjavaの環境があれば実行できるプログラムなのか、、など 私が実行した結果以下のエラーを吐きましてお手上げ状態です [java] Exception in thread "main" java.net.BindException: アドレスは既に使 用中です [java] at java.net.PlainSocketImpl.socketBind(Native Method) [java] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) [java] at java.net.ServerSocket.bind(ServerSocket.java:376) [java] at java.net.ServerSocket.<init>(ServerSocket.java:237) [java] at javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.java:181) [java] at sun.security.ssl.SSLServerSocketImpl.<init>(SSLServerSocketImpl.java:134) [java] at sun.security.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:91) [java] at MPoodle.main(MPoodle.java:39) 環境は仮想環境で centos JDK1.7 apache https 443 ssl3.0のみうけつける 上で言いました通り実行環境はなんなのでしょうか、、javaは全くの素人でして ソケットプログラミングで、portを443と1443などどうなっているのかもさっぱりでございます。。。 どなたかご教授お願いしたします。

  • Javaがへん

    1) いまhelo.javaがあるとします。 javac helo.java は通りました。 java helo と入力すると以下のようなエラーがでます。 Exception in thread "main" java.lang.NoClassDefFoundError: helo このサイトを見て、ちゃんと環境変数のパスは通しました。 http://www.smg.co.jp/seminar/java/ PATH C:\Program Files\Java\jdk1.5.0_09\bin (自分のversionは1.5.0_09です) 正直理由がわかりません。なんでこんなエラーがでるのかわかりません。helo.javaは単なるhello プログラムです。ちゃんと public static void mainはあります。

  • サーブレットで使用しているBeanを通常のJavaプログラムで再利用したい

    サーブレットで使用しているBeanを通常のJavaプログラムで再利用したいと考えています。 通常のJavaプログラムというのは サーバにtelnetログインし javaコマンドで実行するプログラムを指します。 サーブレット側では、 JDBCを利用したコネクションプーリング(JavaBean)を使用しています。 通常のJavaプログラムでも、このBeanをimportして使用したいのですが、 実行時エラーとして、 Exception in thread "main" Backend start-up failed:FATAL: Sorry, too many clients already とエラー表示されます。 DBは postgres を使用しています。 使用するために必要な設定等わかりましたら教えてください。 コネクションプーリング(JavaBean)全文を記載したかったのですが、 字数制限に引っかかりましたので省略します。 必要あれば補足に記載します。

    • ベストアンサー
    • Java
  • Javaの実行エラーが起きます。

    Javaの実行エラーが起きます。 Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativetimer in java.library.pathの解決方法 現在、大学で研究をしており、その関係でネットからひろったJavaのプログラムを動かそうとしているのですが、実行すると上記のようなエラーにより実行できずに困っています。eclipseを使っています。何か解決方法があれば、教えてください。

    • ベストアンサー
    • Java
  • javaの実行時のエラー

    javaを使って圧縮プログラムを作ったのですがコンパイルは通るのに実行時に Exception in thread "main"java.lang.StringIndexOutOfBoundsException: String index out of range: 80 at java.lang.String.charAt(String.java:455) at ashuku.char1(ashuku.java:51) at ashuku.kensa1(ashuku.java:23) at ashuku.main(ashuku.java:9) というエラーが出ます。このエラーの意味は何なのですか?教えてください。プログラムが長くて載せられないので、このエラーが出たときに何をチェックすればいいか教えてもらえると助かります。お願いします

    • ベストアンサー
    • Java
  • javaプログラムのエラーについてです

    プログラムは無事コンパイルすることができました。 しかし、アプレットを実行すると以下のようなエラーが発生します。 なぜこのようなエラーが起こるのでしょうか?勉強不足ですいません。 Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 2 at sample1.paint(sample1.java:19) at java.awt.Container.update(Container.java:1988) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255) at sun.awt.RepaintArea.paint(RepaintArea.java:232) at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347) at java.awt.Component.dispatchEventImpl(Component.java:4948) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) at java.awt.EventQueue$4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  • 超初心者。プログラムの実行ができません

    やさしいJavaという本を買ってきて、勉強しようとはじめたものの、プログラムの実行でつまずいています。いろいろと読むとpathが悪い気がするのですが、どうしたらいいのかわからないので、おわかりの方ご教授ください。 エラーメッセージ Exception in thread "main"Java.lang.NoCLassDefFoundError:Sample1 ---- PATH C:\Program Files\Java\jdk1.5.0_09\bin ---- CLASSPATH C:\Program Files\Java\j2re1.4.2_06\lib\ext\QTJava.zip;. よろしくお願いします。

  • Java実行でのエラー

    Javaを勉強したいのでインストールしてみたところまでは良かったのですがコンパイルを通した後に実行すると動きません。 CLASSPATH:c:\Java JavaファイルがJavaフォルダの中に入っている状態です。 【手順】 c:\Java>java HelloJava.java ↓コンパイル成功 c:\Java>java HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava というエラーが出てJavaを実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。

    • ベストアンサー
    • Java

専門家に質問してみよう