Javaネットワークの本について

このQ&Aのポイント
  • 「基礎からわかる TCP/IP Javaネットワークプログラミング」の第2版の105ページに記載されている、SocketとServerSocketを使用した時刻の送受信プログラムを動かした際に発生したエラーについて質問します。
  • エラーのスタックトレースから推測すると、SocketOutputStreamというクラスがJavaTM Platform, Standard Edition 6 API仕様には含まれていないようです。また、Unknown sourceはデバッグ情報の行番号を表示しないようにしたものです。
  • SocketOutputStreamというクラスやUnknown sourceについて詳しく知っている方、教えていただけないでしょうか?
回答を見る
  • ベストアンサー

java ネットワークの本について

こんにちは。 趣味でプログラミングをしているものです。 さっそくですが質問させていただきます。 まずは以下のURLから3ばんめのリンク先を 見ていただきたいのですが... http://www.eonet.ne.jp/~mycabinet 「基礎からわかる TCP/IP Javaネットワークプログラミング」 の第2版の105ページに記載されている、内容をもとに コマンドプロンプトを2つ起動し、 Socket と ServerSocket で 時刻を送信、受信するプログラムを動かしてみたのですが、 要請を受けて時刻を教える側から 例外を発生させて 終了してしまいました。 スタックトレースは次のようなものです。 java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) -(1) at java.net.SocketOutputStream.socketWrite(Unknown source) -(2) at java.net.SocketOutputStream.write(Unknown source) -(3) at Netclock.start(Netclock.java:58) at Netclock.main(Netclock.java:83) このうち(1),(2),(3)のSocketOutputStream というのは 「JavaTM Platform, Standard Edition 6 API 仕様」 に載っていなかったのですが、 このAPIには含まれていないクラス、ということでしょうか? (2),(3)のUnknown source についてインターネットでみてみたところ、 デバッグ情報としての行番号などを削除している、というような 記述を見かけたのですが、意味はよくわからないのですが、 APIにこれらのクラス、メソッドはあるということでしょうか? ご存知の方、教えていただけないでしょうか? よろしくお願いします。

noname#173931
noname#173931
  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

java.net.SocketOutputStream はパッケージプライベートなクラスですので、java.net 以外のパッケージからは見えません。したがって、アプリケーションが SocketOutputStream を直接扱うことが有りませんので API 仕様に載っていないのだと思います。 java.net の外から SocketOutputStream のオブジェクトを扱う場合は、親クラスである FileOutputStream か更にその上位の型を通じてアクセスすることになります。 外部から直接見ることが出来ないという意味では、APIには含まれていないという事になるかも知れませんが、標準クラスライブラリの中には存在します。 Eclipse でJDKをお使いでしたら、下記のパスからソースコードが見られるかと。  JREシステム・ライブラリ/rt.jar/java/net/SocketOutputStream.class

参考URL:
http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_%28Java%29
noname#173931
質問者

お礼

さっそく回答していただき、ありがとうございます。 そうですか、パッケージプライベートについて、教えていただき、 ありがとうございます。 教えていただけたついでといっては、失礼かもしれませんが、 もう少し教えていただけないでしょうか? 例外の発生は(1)からだと思うのですが、 どのようにすれば、うまく動作するようになるのでしょうか? よろしくお願いします。

関連するQ&A

  • JAVAであるAPIの使い方

    JAVA初心者です。 あるブループウェアの連携APIを使うことになってしまったのですが、 (そのため現在JAVA入門から勉強しています) サンプルプログラムを動かすことはできました。 多分新しく作ったクラスにJARファイルを追加?することになると思い、 まず試しにJARファイルを解凍して同じファイル(ファルダ)構成で再びJARファイルを作りました。 コマンド:jar cmf garoon3api\META-INF\MANIFEST.MF garoon3api.jar garoon33api すると、サンプルプログラムは動きませんでした。 C:\java\garoon>java -cp garoon3api.jar com.cybozu.garoon3.usecase.GetUser -g log in.ini -i inG.csv -o outG.csv Exception in thread "main" java.lang.NoClassDefFoundError: com/cybozu/garoon3/us ecase/GetUser Caused by: java.lang.ClassNotFoundException: com.cybozu.garoon3.usecase.GetUser at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: com.cybozu.garoon3.usecase.GetUser. Program will exit. 何がおかしいのでしょうか? どなたか教えて下さい。 また参考となるHPとかあれば教えてください。 よろしくお願い致します。

    • ベストアンサー
    • 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 起動しません

    「アプリケーションの起動に失敗しました」詳細をクリック すると下記のような表示がJavaコンソールにでます。IEのオプション 「詳細設定」にJavaが現れません。対応を教えて頂ければ幸です。 記 Java Plug-in 1.6.0_17 使用中の JRE のバージョン 1.6.0_17-b04 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Users\igarashi ---------------------------------------------------- c: コンソールウィンドウをクリア f: ファイナライズキューのオブジェクトをファイナライズ g: ガベージコレクト h: このヘルプメッセージを表示 l: クラスローダリストをダンプ m: メモリ使用率を表示 o: トリガログ q: コンソールを非表示 r: ポリシー設定を再ロード s: システムプロパティと配備プロパティをダンプ t: スレッドリストをダンプ v: スレッドスタックをダンプ x: クラスローダキャッシュをクリア 0-5: トレースレベルを <n> に設定 ---------------------------------------------------- load: クラス jreCheck.class が見つかりません。 java.lang.ClassNotFoundException: jreCheck.class at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at java.net.HttpURLConnection.getResponseCode(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) ... 7 more 例外: java.lang.ClassNotFoundException: jreCheck.class

  • Javaでのエラーについて

    Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '.' at java.util.Formatter.checkText(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream.printf(Unknown Source) at ShininginSpace.main(ShininginSpace.java:33) と出てきたのですが、これはどういう意味ですか?

    • ベストアンサー
    • Java
  • JavaでBase64をエンコード・デコード(長めです)

    初めまして。今,Javaの勉強をしています。 Base64のエンコード・デコードを行うプログラムをコマンドプロンプトでコンパイルまでは成功するのですが,いざ実行してみると >java Base64 Exception in thread "main" java.lang.NoClassDefFoundError: Base64 (wrong name: d escriber/Base64) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) というエラーがでます。 プログラムは下記のサイトを参考にさせていただきました。 http://www.ki.rim.or.jp/~kuro/Java/Etc/Etc-03-SunMisc.html クラス名とファイル名は同じはずなのですが…。 実行方法が悪いのかどうなのかわかりませんが,よろしければ指摘お願いします 。 わかりにくい文章ですみません。。

    • ベストアンサー
    • Java
  • javaでRMI関係の質問です。

    クライアントアプリケーションからサーバAPIを使う際に以下のエラーがでます。 eclipse+javaで開発中です。 Exception in thread "main" java.lang.NoClassDefFoundError: gnu/trove/THashSet at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Unknown Source) at java.lang.Class.getDeclaredField(Unknown Source) at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source) at java.io.ObjectStreamClass.access$700(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.<init>(Unknown Source) at java.io.ObjectStreamClass.lookup(Unknown Source) at java.io.ObjectStreamClass.initNonProxy(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Unknown Source) at se.pricer.apidemo.APIDemo.<init>(APIDemo.java:26) at se.pricer.apidemo.APIDemo.main(APIDemo.java:83) Caused by: java.lang.ClassNotFoundException: gnu.trove.THashSet at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 19 more 通信のURLは合っています。 「gnu/trove/THashSet」のエラーの意味を教えて下さい。 レジストリーのバインドがうまく出来ていないと思われます。 サーバのモジュールも実行構成ー>引数タブー>VM引数でcodebasの指定方法もいまいちわかりません。 初投稿なので変な質問ですが誰か力を貸して下さい。

    • ベストアンサー
    • Java
  • Java コンソールが起動しない

    Java コンソールが起動しない アプリケーションの起動に失敗しましたとでる。 明細 Java Plug-in 1.6.0_22 使用中の JRE のバージョン 1.6.0_22-b04 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Documents and Settings\Owner ---------------------------------------------------- c: コンソールウィンドウをクリア f: ファイナライズキューのオブジェクトをファイナライズ g: ガベージコレクト h: このヘルプメッセージを表示 l: クラスローダリストをダンプ m: メモリ使用率を表示 o: トリガログ q: コンソールを非表示 r: ポリシー設定を再ロード s: システムプロパティと配備プロパティをダンプ t: スレッドリストをダンプ v: スレッドスタックをダンプ x: クラスローダキャッシュをクリア 0-5: トレースレベルを <n> に設定 ---------------------------------------------------- load: クラス LiveApplet.class が見つかりません。 java.lang.ClassNotFoundException: LiveApplet.class at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown So

    • ベストアンサー
    • Java
  • java.lang.NoClassDefFoundError。。。

    どうぞ知恵をお貸しください。 ・jdk-1.5.0.16 ・mysql-4.0.26-win32 ・mysql-connector-java-3.1.14 ・eclipse 3.2.0 をダウンロード、インストールしてjavaの勉強を行っています。 コマンドプロンプトよりコンパイルを成功した場合は実行時に下記のエラーが、 Exception in thread "main" java.lang.NoClassDefFoundError コンパイルに失敗した場合は「読み込めません」のエラーが出力されます。 環境変数でCLASSPATHも設定してありますが、あえて実行時にclasspathを指定しても試みてみましたがエラーは変わりません。 何が原因なのでしょうか? どうぞご指導をよろしくお願いします。 エラー全文 Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: mypackage/sample) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)

  • javaアプリケーションでのエラー対処方法

    javaアプリケーションで次のようなエラーが出ます。 どのように対処すればよろしいでしょうか? 入れなければならないソフト等もあればご教示ください。 よろしくお願いいたします。 Exception in thread "main" java.lang.NoClassDefFoundError: edu/emory/mathcs/backport/java/util/concurrent/locks/Lock at UpdateFileCreator.main(Unknown Source) Caused by: java.lang.ClassNotFoundException: edu.emory.mathcs.backport.java.util.concurrent.locks.Lock at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 1 more

  • 明示的にコンパイル

    java eclipse3.5を使ってプログラミングの勉強をしています。 あるプログラムを実行するために、事前にいくつかのプログラムを 明示的にコンパイルしなくてはいけないのですが、明示的にコンパイルする方法が分かりません。 あるサイトを見たら、【プロジェクト】ー>【すべて再ビルド】を 選択すればよいとかかれていたのでやってみたのですが、次のような エラーが出てしまいます。 Exception in thread "main" java.lang.ClassNotFoundException: EchoProtocolFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at socket_110.ThreadMain.main(ThreadMain.java:22) このエラーを取り除くには、どうすればよいのでしょうか? 分かる方お願いします。