java ネットワークプログラミングの本で

このQ&Aのポイント
  • 「基礎からわかる TCP/IP Javaネットワークプログラミング」第2版の98ページに記載されている、サーバーへリクエストを送り、サーバーからレスポンスを受け取るコードを作成したが、通信がうまくいかなかった。
  • amazonでネットワークプログラミングの本を見たが、出版年度が古いものが多かった。
  • いくつかの状況から、正しいhtmlが返ってこない問題を解決したい。
回答を見る
  • ベストアンサー

java ネットワークプログラミングの本で

こんにちは。趣味でプログラミングをしているものです。 さっそくですが、質問させていただきます。 「基礎からわかる TCP/IP Javaネットワークプログラミング」 の第2版の98ページに記載されている、内容をもとに サーバーへ リクエストを送り、 サーバーから レスポンスを受け取るコードを しろうとなりに作ってみたのですが... amazon でネットワークプログラミングの本をみてみると 大体が出版年度が古いものだったのですが... ------------------------------------------------------- DNSネーム : www.google.co.jp port番号 : 80 リクエスト : GET /index.html と入力してから、送信の終了である [ . ]を入力したら eclipseのコマンドプロンプトに レスポンスが返ってきたことはきたのですが、 状態コードが 200でなく302となっており、 通信がうまくいかなかったようなのですが、 ヘッダの詳しい内容というのがわかりません。 返されてきたhtmlの内容を見ると、 どうやら、昔のページにアクセスしたのかな、 と思うぐらいなのですが... ------------------------------------------------------- 以下のURLから2ばんめのリンク先にある テキストファイルにソースコードの全文および 返されてきたレスポンスを載せてありますので よろしければ見ていただきたいのですが... http://www.eonet.ne.jp/~mycabinet その上で、 どのようにすれば、正しいhtmlが返ってくるのでしょうか? ご存知の方、教えていただけないでしょうか? よろしくお願いします。

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

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

> googleにアクセスした場合のクッキーをセットしてからの > 「リダイレクトの動作」はステータスコード302を受けた > ブラウザが担当するのでしょうか? はい、そうです。302のレスポンスの中にあるLocation:で示されているURLを改めてアクセスします。 http://www.google.co.jp/index.htmlの場合はLocation:に書かれているURLも同じですが。

noname#173931
質問者

お礼

再び回答していただきありがとうございます。 そうですか、 また、何か質問させていただくことがありましたら、 よろしくお願いします。 貴重な時間を割いての回答、ありがとうございました。

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

今でもhttp://www.google.co.jp/index.htmlは正しいURLなんですが、Cookieをセットしてから同じURLをアクセスし直させるために、コード302を返しているようです。レスポンスヘッダにSet-Cookie:という行がありますよね? http://www.google.co.jp/index.htmlにアクセスすることが目的でないなら、Cookieを使わずにアクセスできる他のサイトで試すといいと思います。

noname#173931
質問者

お礼

さっそく回答していただきありがとうございます。 回答していただけたついでといっては失礼かも しれませんが、もう少し教えていただけないでしょうか? レスポンスヘッダの ステータスコード 302 について インターネットであちこちみてみたのですが、 一時的に移動して、また戻ってくる、というようなことが 書かれていたのですが、 通常googleなどのサイトにアクセスする場合、IE,firefoxなどの ブラウザが使われると思うのですが、 googleにアクセスした場合のクッキーをセットしてからの 「リダイレクトの動作」はステータスコード302を受けた ブラウザが担当するのでしょうか? 的外れな質問かもしれませんが教えていただけないでしょうか よろしくお願いします。 とにかく、貴重な時間をさいての回答、 ありがとうございました。

関連するQ&A

  • ネットワークプログラミングについて

    C言語のネットワークプログラミングについて質問です。 UDPで通信を行う際に、daytimeクライアントとサーバの変更する必要がある所はどこになるのでしょうか?  また、どのようなヘッダや関数になるのでしょうか?

  • ネットワークプログラミングの本を教えてください

    お世話になります。 「ネットワークプログラミング」の良書を教えてください。 よろしくお願いします。 Cを本格的に勉強して1ヶ月で、やっと「独習C」が終わりました。 いまK&Rを読んでいます。アセンブリも勉強中です。 Linux は 自宅で centOS5 と XP を繋いで実験しています。 TCP/IP は解ります。 もっとも興味があるのはセキュリティなので、 いずれサーバサイドJavaをやりたいと思っています。 その前にもう少しみっちりとCをやろうと思いますが、 ゲームには興味がありません。 そこでネットワーク関係でやろうと思っています。 Windows/UNIX に関わらず、読まれて参考になった本をご紹介下さい。

  • 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にこれらのクラス、メソッドはあるということでしょうか? ご存知の方、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのネットワークプログラミングについて

    テキストベースのコマンドをTCP/IPで介してやり取りする、OSシミュレータについての質問です。 このシミュレータは例えば、"DR 400 100"といったコマンドを入力すると、400番地の内容を100の長さ返します。 javaで上記のコマンドをサーバに送り、番地の内容を受け取るプログラムを作成したいのですが、うまくいきません。 byte型の配列buffに"DR 400 100"を格納して outstr.write(buff,0,n); としているのですが、返答を受け取る instr.read(buff)のところでプログラムが止まってしまいます。 サーバへのデータの受け渡しが悪いのか、受け取りの仕方が悪いのかよくよくわかりません。 分かる方がいましたら、アドバイスをお願いします。

    • ベストアンサー
    • Java
  • TCP/IPソケットプログラミングJava編について

    TCP/IPソケットプログラミングJava編という本を使って通信ネットワークの勉強をしています。 この本は一通り読んでプログラムの動作確認を行ったのですが、第4章の圧縮サーバのプログラムの動作確認が取れません。 圧縮サーバのプログラムは、本に乗っていなくて自作する必要があります。 どなたかこのプログラムを作成した方いらっしゃいませんか? いらしたらソースコードを教えていただきたいです。

    • ベストアンサー
    • Java
  • ネットワークプログラミングを勉強しようとしているのですが。

    プログラミング初心者です。 C言語でWindowsプログラミングを一応学び、それを利用してゲームを作るのと平行してネットワークも勉強しようと思っています。 使おうとしている書籍は"UNIXネットワークプログラミング入門"という書籍で、初めてネットワークプログラミングを勉強しようとしています。 そこでその本の第二章(p32)のチャットプログラムを動作させようとしたのですがうまくできません。ソースコードはhttp://www.gihyo.co.jp/books/support.php/4-7741-1754-4 に置いてあるフォルダのchap2というフォルダにあるコードです。 まずcygwinでサーバのプログラムを動作させてから、cygwinをもう一つ起動させてそちらでクライアントのプログラムを動作させればいいと書いてあると「思う」のですが、動作しません。クライアントのプログラムを動作させても「gethostbyname: Operation not permitted」というメッセージが出て終了してしまいます。 もし、同じ本を使ったことがある方、またはそうでなくても超初心者がしてしまうような間違いや手順足らずなことなどに心当たりがあれば教えて下さい。

  • ネットワークプログラミングを勉強しようとしているのですが。

    プログラミング初心者です。 C言語でWindowsプログラミングを一応学び、それを利用してゲームを作るのと平行してネットワークも勉強しようと思っています。 使おうとしている書籍は"UNIXネットワークプログラミング入門"という書籍で、初めてネットワークプログラミングを勉強しようとしています。 そこでその本の第二章(p32)のチャットプログラムを動作させようとしたのですがうまくできません。ソースコードは​http://www.gihyo.co.jp/books/support.php/4-7741-1754-4​ に置いてあるフォルダのchap2というフォルダにあるコードです。 まずcygwinでサーバのプログラムを動作させてから、cygwinをもう一つ起動させてそちらでクライアントのプログラムを動作させればいいと書いてあると「思う」のですが、動作しません。クライアントのプログラムを動作させても「gethostbyname: Operation not permitted」というメッセージが出て終了してしまいます。 もし、同じ本を使ったことがある方、またはそうでなくても超初心者がしてしまうような間違いや手順足らずなことなどに心当たりがあれば教えて下さい。

  • レスポンスヘッダとエンティティヘッダの意味

    HTTPのレスポンスヘッダとエンティティヘッダの意味を教えてください。 参考書には、エンティティヘッダはリクエスト・レスポンスと載ってましたが、リクエスト時、レスポンス時にもエンティティヘッダが付くということでしょか? また、ステータスコードは、レスポンスヘッダで返されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • ネットワークの設定

    PC機種はacerです。 ネットワークの設定で、ゲートウェイアドレス、dnsサーバー等に数字を入力しようとしたですが、数字を入力できるページの出し方を忘れてしまいました。 くだらない質問ですいません。ご回答お願いします。

  • Java FTPクライアントを模したもので・・・

    こんにちは。 趣味でプログラミングをしているものです。 さっそくですが質問させていただきます。 小高知宏氏の著作 「基礎からわかる TCP/IP Javaネットワークプログラミング」 の FTPクライアントを模したプログラムについてなのですが、 まずは、以下の抜粋のコードを見ていただきたいのですが、 ------------------------------------------------------------ public class FTP2 { Socket ctrlSocket; PrintWriter ctrlOutput; //ctrlSocket への出力 BufferedReader ctrlInput; //ctrlSocket からのの入力 //ログイン時のパスワード、 //カレントディレクトリ変更時のディレクトリ名を読み取る BufferedReader lineread; final int CTRLPORT = 21; ~ 省略 ~  // FTPサーバーにQUITのコマンドを送信するためのメソッド void doQuit() { try { ctrlOutput.println( "QUIT"); ctrlOutput.flush(); } catch( Exception ie3 ) { ie3.printStackTrace(); System.exit(1); } } ~ 省略 ~ } ----------------------------------------------------------- Eclipseで入力していたのですが、 メソッド doQuit 内の try catch ブロックの catch( Exception ie3 ) が catch( IOException ie3 ) だと Eclipseによって、到達不可能なブロックです と表示されました。 このException の詳しい内容を教えていただけないでしょうか? ご存知の方、よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう