する質問をすることでしか得られない、回答やアドバイスがある。Javaでネットワークプログラミングを勉強したく、書籍やインターネットの情報を参考に簡単なWebサーバを作成しようとしています。通信自体はなんとかうまく、送受信することができました。疑問に思ったのが、ファイルの入出力処理に関してSocketの挙動で不明な点があるのです。自分が参考にしている本やページではSocket宣言->FileStream宣言という順番でインスタンスを準備していますが、特にこれらを紐付けている処理があるようには見えませんでした。getInputStream/getOutputStreamのようにインスタンスの情報を使用しているように見えます。Socketを最初に作成したのに後から作成したFileStreamの情報をSocketインスタンスがどのようにして持っているのかがわからず、質問させていただきました。以下にソースとテンプレートにあわせた質問事項を記載いたします。ヒントだけでもいただければとっても助かります。System.out.println("クライアントからの接続を待ちます。System.out.print("接続を終了しました。こちらも同様の宣言をしている。}}試したこと・ためしにFileInputStreamのインスタンスを二つ以上宣言してみましたが、なぜか最初のStreamが使用されました。SocketOutputStream'といったクラスの処理の移り変わりは見ることが出来ましたが、ソースにあるような具体的なファイルパス等を確認することが出来ず、追い方がそもそもあっているのかも不明です。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+1多分、質問者さんに必要なのはサーバーとクライアントのコードを眺めたりデバッガーでその実装がどうなっているかを覗いたりすることではなく、通信を実現する各々のオブジェクトの役割を把握することだろうと思います。事前に「通信とは何か」「ソケットとは何か」を把握した状態でソースコードを見れば「これらのオブジェクトは何を表すか」が推し量れるのですが事前知識なしでソースコードだけ見てもそれがわからないと思います。仕組み」といったキーワードで図解入りで解説したような記事を探してみることをお奨めします。http://web.sfc.keio.ac.jp/~tsaito/JavaLectures/Lecture8/Lec8-1.htmlのように「いきなりソースコードを説明するのではなく通信の概念を解説するような記事」を見つけてみてください。FileOutputStreamそれぞれに特別な関係はありません。通信を行うプログラムで肝になるのはSocketです。FileInputStraem/FileOutputStreamは通信とは直接関係ありません。このアプリケーションがたまたま通信データを扱うのにファイルを使っているだけにすぎないのです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。13:43ご回答いただきありがとうございます!参考として載せていただいたページ、拝見させていただきました。参考として載せていただいたページ、拝見させていただきました。編集いえいえリンク先のページをよくご覧ください。client側のsocketのgetOutputStream()<->server側のsocketのgetInputStream()になります。client側でwriteするとそれがサーバー側でreadできるのですから。---追記---あああ!リンク先のページの記述が間違ってますね・・・失礼しました。いえいえリンク先のページをよくご覧ください。client側でwriteするとそれがサーバー側でreadできるのですから。あああ!リンク先のページの記述が間違ってますね・・・失礼しました。編集そういう感じです。InputStreamの「作成」というよりは「取得」と考えた方がいいです。言葉の違いは時として理解するのに重要な役割を果たすことがあります。「作成」ならcreateOutputStreamといったメソッド名になっているはずです。なくてgetOutputStreamという名前になってますね?これは「socketが接続されると自動的にOutputStreamが必要に応じて用意され、getOutputStreamはその用意されたものを取ってくるだけのメソッド」みたいな感覚でとらえると良いと思います。InputStreamの「作成」というよりは「取得」と考えた方がいいです。言葉の違いは時として理解するのに重要な役割を果たすことがあります。「作成」ならcreateOutputStreamといったメソッド名になっているはずです。なくてgetOutputStreamという名前になってますね?これは「socketが接続されると自動的にOutputStreamが必要に応じて用意され、getOutputStreamはその用意されたものを取ってくるだけのメソッド」みたいな感覚でとらえると良いと思います。14:12>socketが接続されると自動的にOutputStreamが必要に応じて用意され、getOutputStreamはその用意されたものを取ってくるだけのメソッド」みたいな感覚まさに自分が今回お聞きしたかったのはこの点だと思います。この説明で疑問が氷解した感があります。getInputStreamとなっているからには、どこかからインスタンスを持ってきているのだろうと考え、それを通信相手側のFileInputStreamだと早合点してしまった点が間違いでありました。KSwordOfHaste様、お時間割いていただきありがとうございました。自分が今回お聞きしたかったのはこの点だと思います。この説明で疑問が氷解した感があります。getInputStreamとなっているからには、どこかからインスタンスを持ってきているのだろうと考え、それを通信相手側のFileInputStreamだと早合点してしまった点が間違いでありました。KSwordOfHaste様、お時間割いていただきありがとうございました。readerに読み込めれない。頂いたご意見への回答は行っておりません。