• 締切済み

SocketのFileDescriptor取得

Javaにて、SocketよりFileDescriptorを取得したいと考えております。 いろいろ検索して調べてみたものの、どのようにFileDescriptorを取得するのかがわかりません。 SocketImplのサブクラスを作成して取得などといったものはありますが、 具体的に何をどう継承してどのメソッドで実現するかが理解できていないです。 上記のSocketのFileDescriptorの取得について、ご教授お願いいたします。

みんなの回答

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.1

書店でネットワークプログラミングの本等を購入されたら分ると思われますが。 或いはjava socketの解説サイト等を例えば次のようにサーチして調べて下さい。 java network OR ネットワーク  プログラミング 解説 OR 入門 ==> ネットワークプログラミング | TECHSCORE(テックスコア) http://www.techscore.com/tech/Java/JavaSE/Network/index/ このサイトではTCP/IP, UDP==データグラム のプログラム例が最初から解説されています。 各ステップ毎にコンパイル実行して確認されて行けば理解できると思われます。 或いはOracleのサイトで元Sun MicrosystemのJava Tutorialがあります。 Java チュートリアル oracle ==> http://docs.oracle.com/cd/E26537_01/tutorial/index.html ==> http://docs.oracle.com/javase/tutorial/ http://www.oracle.com/technetwork/java/javase/downloads/java-se-7-tutorial-2012-02-28-1536013.html Java SE Tutorial 2012-02-28 をダウンロードして展開し、newworkingの項を参照下さい。 また、java runtimeのソースを含んだパッケージは次からダウンロード出来ます。 http://www.oracle.com/technetwork/java/javase/overview/index.html ==> http://www.oracle.com/technetwork/java/javase/downloads/index.html Java Platform (JDK) 7u3 Download http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html Windows x86(32-bit) or (64-bit)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javaで数字の有効桁数を取得したい

    javaで数字の有効桁数を取得する関数を作成しようと思っています。 具体的には、 「12」なら2。 「12.4」なら3。 「12.345」なら5。 「0.0023」なら2。 「0.2035」なら4。 「3.00」なら3。 という感じで取得したいのですが、これを実現する方法、もしくはメソッド等ありましたら 教えて下さい。よろしくお願いします。

    • ベストアンサー
    • Java
  • closeされたsocketへの動作について

    現在、javaを使用してプログラムを作成しているのですが、closeされたsocketに対しての動作について質問があります。 クライアント側のプログラムに ObjectOutputStream.writeObject(send); ObjectOutputStream.flush(); ObjectInputStream.readObject(); というものがあったとします。 サーバ側でsocketをcloseし、上記のプログラムを走らせた場合writeObjectにてsocketExceptionを検出する場合とreadObjectでEOFExceptionを検出する場合の2パターンが起こりうるのですが、これはなぜでしょうか? なお、上記のwriteObjectの引数のsendはSerializeを継承して作成した自作クラスのオブジェクトです。

  • 継承について

    下の質問の回答、間違ってませんか? -------------------------------------------- 親クラスのフィールドをメソッドを全て継承することになります。よって、サブクラス2は、サブクラス1とスーパークラスのメンバーを全て持つことになります。サブクラス2をインスタンス化すると、サブクラス1とスーパークラスが全てインスタンス化(コンピューターのメモリ上等に配置)されます。 ただ、可視性というものがあり、サブクラスから親クラスのメンバーを直接取り扱えない場合があります。privateや可視性修飾子無しの場合、サブクラスから直接取り扱えません。ただ、継承はされているので、インスタンスとしては存在します。例えば、 class スーパークラス{ private int abc; public int getAbc(){ return this.abc; } というクラスがあり、これを継承したサブクラスがあったとします。 サブクラスからは、privateなメンバー変数abcは直接取り扱うことができません。ただ、publicなgetAbcメソッドはサブクラスから取り扱えます。これで何が分かるかといいますと、privateなメンバーでもサブクラスに継承されるのです。単に可視性の問題で直接取り扱えないだけなのです。 また、オーバーライドされたメソッドがあったとしても、super.メソッド()で親のメソッドも呼べますので、これも継承されているのです。

  • 継承について(長文です)

    いつもお世話になっています。現在、継承についての練習問題を解いているのですがわからないことがあるので質問させていただきます。 問題は、「自己紹介メソッド(抽象メソッド)を持つIntroduceクラスを作成し、そのクラスを継承してFistsNameクラス、FullNameクラス、IncludeAgeクラスを作成しなさい。三つのサブクラスのインスタンスを混合して配列に保持し自己紹介をしなさい」というものです。 それぞれのクラスはコマンドライン引数で名字(引数一つ)だけ、フルネーム(引数二つ)、フルネームと年齢(引数三つ)と3種類の引数を入力することによって適切なメソッドが呼び出されるということです。(わかりにくい文章ですいません。例えばヤマダと入力すればFirstNameクラスの自己紹介メソッドが呼び出されてヤマダと表示させたいのです)引数をサブクラスに渡さないと行けませんが、まずコンストラクタで引数をサブクラスに渡す場合は引数を一つ(もしくは二つ)しか指定しなかったときはフルネームとフルネーム+年齢のクラスでコンパイルエラー(ArrayIndexOutOfBoundsException)が出ます(これは理解することが出来ます)次にメソッドで渡す場合はシグネチャが異なるのでオーバーライドされずこちらもコンパイルエラーとなります。この他に引数をサブクラスに渡す方法はあるのでしょうか? わかりにくい文章になってしまいましたが、要するに三つのサブクラスをインスタンス化しその後、引数の個数により適切なサブクラスのメソッドが呼び出され引数を連結して表示させたいのです。このようなことは実現できないのでしょうか?if節によって引数の個数で場合分けなどをしないといけないのでしょうか?質問文がわかりにくければ補足させていただきます。よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスの継承の仕方

    後学のため、JavaScriptについて勉強しています。 JavaScriptでもクラス(のようなもの)を定義してオブジェクトを作成できるようですが、サブクラスを定義する方法が分かりません。メソッドやコンストラクタはどのように継承すればよいのでしょうか。 お分かりの方おられましたら、ご教授のほどお願い致します。

  • スレッドセーフなクラスのサブクラスは? synchronizedって継承先では?

    1)メソッドにsynchronizedキーワードをつけた時、継承先のサブクラス側でもsynchronizedは生きているのでしょうか? 2)もし生きていると サブクラス側で、synchronizedをとりけしたい場合 synchronizedをつけない形でオーバーライドして 中身の実装は super.メソッド名(); だけにするという方法しかないということでしょうか? 3)なお、 サブクラス側で、synchronizedキーワードを追加しながら メソッドのオーバーライドができるということは 知っています。 4) (1)の答えが生きていない。とすれば・・。 スレッドセーフなクラスをがんばって作成しても、 サブクラス作成者がいちいち意識しなければ、 サブクラスはスレッドアンセーフになってしまう ということでしょうか? サブクラス作成者がたとえ、赤の他人でまったく、 コミュニケーションをとれない状況であろうとも、 そうならないようにするためのしかけを 作るためのテクニックはあるでしょうか? なお、これはクラスをfinalしたくない場合の話です 以上です。

    • ベストアンサー
    • Java
  • javaのsocketインスタンスについて

    javaでソケット接続するプログラムを作成しています。 socketを.closeした場合、このsocketインスタンスのシステムリソースは開放されるのでしょうか? お詳しい方おられましたらよろしくお願いします。

  • 継承(extends)について

    extendsについてわからないことがあります。 次の3つのクラスがあった時、 class スーパークラス { ... class サブクラス1 extends スーパークラス { ... class サブクラス2 extends サブクラス1 {... サブクラス2は、サブクラス1でスーパークラスから継承しているフィールドをメソッドを継承するのでしょうか?

    • ベストアンサー
    • Java
  • Twitterのダイレクトメッセージ取得について

    Twitter上の自分で作成した特定のアカウントのダイレクトメッセージの取得をしたいと考えています。 JAVA(Twitter4J)を利用して実現することを検討していますが、 具体的にどのようなソースコードで実現可能でしょうか。 サンプルなどございましたらご教示下さい。

    • ベストアンサー
    • Java
  • Socketの接続のタイムアウトを設定するには

    JavaでSocket通信をしようとおもっています。 Socketはnewするときにconnectもしてしまいまうらしいので 妙なIPアドレスを指定したりして、応答がもどってこないと すべてそこで止まってしまうとおもうのですが、 Timeoutをかける方法はないのでしょうか。 setSoTimeoutというメソッドはreadのときとかStreamに関してしか かけられないということが分かりました。 Socketのコンストラクタの引数にSocketImplを指定して、 Socket.setSoTimeoutしてから SocketImpl.connectすれば大丈夫かな、とおもっていたのですが、 setSoTimeoutはreadにしか効かない、と明記してあったので、無駄ですよね。 どこかに情報がないかと検索エンジンでも探してみたのですが、 見つかりません。もしかしてタイムアウトを設定するのは 一般的な方法ではないのかとも思えてきました。 ずーーーーっと接続にしにいくのを待ちつづけるしかないのでしょうか。 どのような設計(というか使うクラス?)をするべきなのか、 思い当たるかたがいらっしゃいましたら教えていただけないでしょうか。 よろしくお願い致します(__)