K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1991] HenacatのC#版を作りました
投稿者:nendo_code
2017/07/09 17:53:38

はじめまして。nendo_codeと申します。 「基礎からのWebアプリケーション開発入門」読ませていただきました。今までなんとなくぼんやりとしか知らなかったWebの知識を整理する事ができ、非常に勉強になりました。 私はC#プログラマなので、学習にあたり細かい動きを理解するために、C#にHenacatのコードを移植して動かしてみたりしました。 その結果HenacatのC#移植版のコードが出来たので、もしよろしければGitHubで公開させていただければと考えておりますが、いかがでしょうか。 こちらとしては、「なんとなく作っちゃったから公開しよう」くらいのノリですので、ダメであればダメでよいです。(書籍として販売されている以上、ご都合などあるかもしれませんし。) よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1990] テスト
投稿者:みっきー
2017/06/16 14:08:39

ウェブサイトから飛んできました。 掲示板ってどうやって作るのかなあという初心者です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1988] Re:26p~27p
投稿者:kokonotu
2017/04/27 16:29:13

>追加情報ありがとうございます。 >80番に修正はしてあったわけですね。失礼しました。 >その上で、今も以下のエラーが出ている、ということでよいでしょうか。 > >>java.net.ConnectException: Connection refused: connect >> at java.net.DualStackPlainSocketImpl.connect0(Native Method) >> at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) >> at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) >> at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) >> at java.net.AbstractPlainSocketImpl.connect(Unknown Source) >> at java.net.PlainSocketImpl.connect(Unknown Source) >> at java.net.SocksSocketImpl.connect(Unknown Source) >> at java.net.Socket.connect(Unknown Source) >> at java.net.Socket.connect(Unknown Source) >> at java.net.Socket.<init>(Unknown Source) >> at java.net.Socket.<init>(Unknown Source) >> at TcpClient.main(TcpClient.java:6) > >だとすれば、TcpClient.javaの6行目でWebサーバへの接続に失敗しているわけで、 >client_send.txtの内容については(まだ送っていないので)ひとまず無関係ですよね。 > >また、貼っていただいたTcpClient.javaにも不審な点はありません。 >当方で、貼っていただいたTcpClient.javaとclient_send.txtにて >実験してみましたが、正しくclient_recv.txtが生成されました。 >私の環境もWindows 10です。Apacheは2.4.23なので、ほぼ同じといってよさそうです。 > >It works!を表示したまま、とのことなので、Apacheはちゃんと起動していて、 >ブラウザからはアクセスできている状態ですよね。 >この状態で、TcpClient.javaから接続できない原因は、正直、ちょっと >思いつきません。 > >念のため確認ですが、Apacheを起動した方のコマンドプロンプトには、 >何かメッセージは出ていませんか? >私の環境では以下のメッセージが出ています。 > >C:\Apache24\bin>httpd >AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::4cd9:c88:9a45:70bc. Set the 'ServerName' directive globally to suppress this message > >これは、本来httpd.confでServerNameを指定すべきところ、やってないことに >起因するもので、この実験では問題ありません(本の中で説明していないのは >ちょっと手抜きかもしれませんが)。他に何か出ていたりしないでしょうか。 > >あるいは、ファイアウォールとかアンチウィルスソフトとかで接続が >遮断されていないでしょうか。 > >すみません、これぐらいしか思いつきません。 > > ご返信ありがとうございます。 apacheには AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::b097:7385:e0c9:544f. Set the 'ServerName' directive globally to suppress this message と出ております。 セキュリティソフトはNortonを入れているのでこれが原因なのかもしれません汗
[この投稿を含むスレッドを表示] [この投稿を削除]
[1987] Re:26p~27p
投稿者:(ぱ)こと管理人
2017/04/27 02:01:20

追加情報ありがとうございます。 80番に修正はしてあったわけですね。失礼しました。 その上で、今も以下のエラーが出ている、ということでよいでしょうか。 >java.net.ConnectException: Connection refused: connect > at java.net.DualStackPlainSocketImpl.connect0(Native Method) > at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) > at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) > at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) > at java.net.AbstractPlainSocketImpl.connect(Unknown Source) > at java.net.PlainSocketImpl.connect(Unknown Source) > at java.net.SocksSocketImpl.connect(Unknown Source) > at java.net.Socket.connect(Unknown Source) > at java.net.Socket.connect(Unknown Source) > at java.net.Socket.<init>(Unknown Source) > at java.net.Socket.<init>(Unknown Source) > at TcpClient.main(TcpClient.java:6) だとすれば、TcpClient.javaの6行目でWebサーバへの接続に失敗しているわけで、 client_send.txtの内容については(まだ送っていないので)ひとまず無関係ですよね。 また、貼っていただいたTcpClient.javaにも不審な点はありません。 当方で、貼っていただいたTcpClient.javaとclient_send.txtにて 実験してみましたが、正しくclient_recv.txtが生成されました。 私の環境もWindows 10です。Apacheは2.4.23なので、ほぼ同じといってよさそうです。 It works!を表示したまま、とのことなので、Apacheはちゃんと起動していて、 ブラウザからはアクセスできている状態ですよね。 この状態で、TcpClient.javaから接続できない原因は、正直、ちょっと 思いつきません。 念のため確認ですが、Apacheを起動した方のコマンドプロンプトには、 何かメッセージは出ていませんか? 私の環境では以下のメッセージが出ています。 C:\Apache24\bin>httpd AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::4cd9:c88:9a45:70bc. Set the 'ServerName' directive globally to suppress this message これは、本来httpd.confでServerNameを指定すべきところ、やってないことに 起因するもので、この実験では問題ありません(本の中で説明していないのは ちょっと手抜きかもしれませんが)。他に何か出ていたりしないでしょうか。 あるいは、ファイアウォールとかアンチウィルスソフトとかで接続が 遮断されていないでしょうか。 すみません、これぐらいしか思いつきません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1986] Re:26p~27p
投稿者:kokonotu
2017/04/26 15:12:51

>こんにちは。読んでいただきありがとうございます。 > >>>【結果】 >>java.net.ConnectException: Connection refused: connect > >エラーメッセージがこうなので、Webサーバへの接続に失敗しています。 > >TcpClient.javaは、最初は自前のサーバTcpServer.javaに接続し、 >p.26でApacheに接続しようとしていますが、 >TcpServer.javaはポート番号8001で待ち受けるのに対し、 >Apacheは(設定を変えなければ)80番で待ちます。 > >推測ですが、p.26の一番下のポート番号の変更を忘れている、 >ということはないでしょうか? >当方でやってみたら、同じエラーが再現しました。 > >違っていましたらすみません。 ご返信ありがとうございます。 現在TcpClient.javaに関しては import java.io.*; import java.net.*; public class TcpClient { public static void main(String[] args) throws Exception { try (Socket socket = new Socket("localhost",80); //localにsocketを生成 //下記のtxtに対して出力用のストリームを開く FileInputStream fis = new FileInputStream("client_send.txt"); FileOutputStream fos = new FileOutputStream("client_recv.txt")) { int ch; // client_send.txtの内容をサーバに送信 OutputStream output = socket.getOutputStream(); //ストリームの終わりに達した場合は-1が返る while ((ch = fis.read()) != -1) { output.write(ch); //読み込んだ内容をOutputStreamに } // 終了を示すため、ゼロを送信 //output.write(0); //ここではサーバーからの返信がいるためソケットは閉じない // サーバからの返信をclient_recv.txtに出力 InputStream input = socket.getInputStream(); while ((ch = input.read()) != -1) { fos.write(ch); } } catch (Exception ex) { ex.printStackTrace(); } } } と記述してあります。 client_send.txtには元々 GET /index.html HTTP/1.1 Host: localhost:8001 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch, br Accept-Language: ja,en-US;q=0.8,en;q=0.6 Cookie: _ga=GA1.1.1220433733.1486961623; PHPSESSID=dl5oi2iab8460ino9qrupnqnr3 だったのを GET /index.html HTTP/1.1 Host: localhost:80 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch, br Accept-Language: ja,en-US;q=0.8,en;q=0.6 Cookie: _ga=GA1.1.1220433733.1486961623; PHPSESSID=dl5oi2iab8460ino9qrupnqnr3 にしたのですがうまくいきません
[この投稿を含むスレッドを表示] [この投稿を削除]
[1985] Re:26p~27p
投稿者:(ぱ)こと管理人
2017/04/22 01:41:06

こんにちは。読んでいただきありがとうございます。 >>【結果】 >java.net.ConnectException: Connection refused: connect エラーメッセージがこうなので、Webサーバへの接続に失敗しています。 TcpClient.javaは、最初は自前のサーバTcpServer.javaに接続し、 p.26でApacheに接続しようとしていますが、 TcpServer.javaはポート番号8001で待ち受けるのに対し、 Apacheは(設定を変えなければ)80番で待ちます。 推測ですが、p.26の一番下のポート番号の変更を忘れている、 ということはないでしょうか? 当方でやってみたら、同じエラーが再現しました。 違っていましたらすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1984] 26p~27p
投稿者:kokonotu
2017/04/20 16:58:55

初めてkokonotuといいます。 ポインタ完全制覇をとても楽しく読ませていただきました。 今回も勉強させて頂きます。 お聞きしたい事は、apacheを起動して[It works]が表記された事が確認後、ブラウザに表示したままTcpClient.javaを起動したのですがコマンドプロンプトにエラーが出てしまいます。何卒宜しくお願い致します。 >【結果】 java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at TcpClient.main(TcpClient.java:6) 【補足】 client_sendには以下のように記載しています GET /index.html HTTP/1.1 Host: localhost:80 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch, br Accept-Language: ja,en-US;q=0.8,en;q=0.6 Cookie: _ga=GA1.1.1220433733.1486961623 【環境】 OS: windows10 apache:2.4.25 ご教授よろしくお願いいたします
[この投稿を含むスレッドを表示] [この投稿を削除]
[1983] Re:書籍「Webサーバを…」の1.3.4について
投稿者:(ぱ)こと管理人
2017/04/03 12:19:39

>GET /index.html HTTP/1.1 >Host: localhost:80 >Connection: keep-alive >Cache-Control: max-age=0 >Upgrade-Insecure-Requests: 1 >User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 >Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 >Accept-Encoding: gzip, deflate, sdch, br >Accept-Language: ja,en-US;q=0.8,en;q=0.6 昼休みなので取り急ぎですが、このclient_send.txtの末尾の空行が抜けてませんでしょうか。 リクエストは飛んでいて、ステータスが408(タイムアウト)になっていますので。 以前も同様の質問があり、その時はレスポンスは返っていたのですが… >3. サポートサイトよりDLした"TcpClient.java(Apache向け)"のファイル名を修正しコンパイル >4. "java TcpClient"で実行 > >【結果】 >25秒ほどたつと実行が終了 >client_recv.txtは生成されるが空 > >【access_log】 >127.0.0.1 - - [01/Apr/2017:16:11:02 -0700] "-" 408 - > >【補足】 >ブラウザからアクセスすると問題なく接続され、access_logにも以下のログが残ります >::1 - - [01/Apr/2017:16:15:12 -0700] "GET / HTTP/1.1" 304 - > > >【環境】 >OS: macOS Sierra 10.12.4 >Server version: Apache/2.4.25 (Unix) >javac 1.8.0_111 > > >何かわかることがございましたらご教授よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1982] 書籍「Webサーバを…」の1.3.4について
投稿者:けんと
2017/04/02 08:18:48

先日「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」を購入し読み進めています。 「1.3.4 TCPクライアントでWebサーバを叩く」の箇所で想定通りのHTTPレスポンスが得られなかったので質問させてください。 最後に詳細な環境をお伝えいたしますが、当方はMacで実行しています。 【手順】 1. Apacheを起動 2. 1.3.3で取得したserver_recv.txtをclient_send.txtにコピー(Hostのポートだけ80に修正してます) GET /index.html HTTP/1.1 Host: localhost:80 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch, br Accept-Language: ja,en-US;q=0.8,en;q=0.6 3. サポートサイトよりDLした"TcpClient.java(Apache向け)"のファイル名を修正しコンパイル 4. "java TcpClient"で実行 【結果】 25秒ほどたつと実行が終了 client_recv.txtは生成されるが空 【access_log】 127.0.0.1 - - [01/Apr/2017:16:11:02 -0700] "-" 408 - 【補足】 ブラウザからアクセスすると問題なく接続され、access_logにも以下のログが残ります ::1 - - [01/Apr/2017:16:15:12 -0700] "GET / HTTP/1.1" 304 - 【環境】 OS: macOS Sierra 10.12.4 Server version: Apache/2.4.25 (Unix) javac 1.8.0_111 何かわかることがございましたらご教授よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1980] Re:ubuntuのgccで出来てvisualstudioで出来ない
投稿者:k
2017/02/07 23:57:09

1章読み終わりました。 HTTPのことが理解できてとても勉強になりました。 2章以降でも質問させてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1979] Re:ubuntuのgccで出来てvisualstudioで出来ない
投稿者:(ぱ)こと管理人
2017/02/05 17:31:56

>基礎からのWEBアプリケーション開発入門 >購入し読んでおります。 ありがとうございます。 >一番初めの tcp_server.c と tcp_client.cの中に sys/socket.h >が見つからずwin+visualstudioではコンパイルできません。 (紙の本なら)p.18の補足「C, C#の場合」に掲載している tcp_server.cおよびtcp_client.cですね。 説明不足だったかもしれませんが、その補足の冒頭にもあるように 「もともとTCPやソケットはUNIX上で、C言語で使用されてきたもの」なので、 Linuxではそのまま使えても、Visual StudioではWindows版のソケットライブラリ であるWinsockを使うことになります。 >sys/socket.hの中身を見てみたいのですが見当たらないのですが。。 #includeするのはsocket.hではなくwinsock2.hになりますし、 リンク時には ws2_32.libが必要です。今ぐぐったのですが、 たとえば以下のページを参考にしてください。 http://www.geekpage.jp/programming/winsock/
[この投稿を含むスレッドを表示] [この投稿を削除]
[1978] ubuntuのgccで出来てvisualstudioで出来ない
投稿者:k
2017/02/03 09:48:00

基礎からのWEBアプリケーション開発入門 購入し読んでおります。 一番初めの tcp_server.c と tcp_client.cの中に sys/socket.h が見つからずwin+visualstudioではコンパイルできません。 ubuntu 14でgccでコンパイルしたら動きました。 この違いはなんでしょうか? sys/socket.hの中身を見てみたいのですが見当たらないのですが。。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1968] Re:疑りぶかいあなたのためのオブジェクト指向再入門
投稿者:(ぱ)こと管理人
2016/09/06 23:32:31

>そこで、出来ましたら、Java の良い本をご紹介願えますと幸いです。 >何卒、宜しくお願い致します。 すみません、最近の本は知らないのですが…… 手前味噌でよければ、 「Java謎+落とし穴徹底解明」 https://www.amazon.co.jp/Java-%E8%AC%8E-%E8%90%BD%E3%81%A8%E3%81%97%E7%A9%B4-%E5%BE%B9%E5%BA%95%E8%A7%A3%E6%98%8E-%E6%A8%99%E6%BA%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%82%BA%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/dp/4774113611 amazonマーケットプレイスで1円とかで買えるようです。 3章の「継承をどう使うか? どこまで使えるか?」あたりは、ある意味「疑り深い~」の 続きと言えるかと思います。 ただ、かなり古い本ですので(JDK1.3の頃)、今となっては古くなってしまっている ところもあります。Genericsや列挙がないことに不満を述べていますが、それらは Java5で実装されましたので。 あとは定番で、Effective Javaとかでしょうか…… https://www.amazon.co.jp/EFFECTIVE-JAVA-Java-Joshua-Bloch/dp/4621066056
[この投稿を含むスレッドを表示] [この投稿を削除]
[1967] Re:疑りぶかいあなたのためのオブジェクト指向再入門
投稿者:晶夫(あきお)
2016/09/05 11:13:19

前橋 殿 返信ありがとうございます。 私は小企業のIT派遣会社で働いています。 現在、常駐先が見つからず、本社にて「待機」の状況です。 そのため、この様な掲示板にカキコできる時間が取れています。 >私自身割と大手のSIerにいる身ですので、私より年上の方がコード書きの勉強を >されているとなると尊敬しますし励みになります。 私の24年間は大手の製造メーカーで従業員は2万人規模の大会社でした。 そこで、「生産管理システム・MES」の 要件定義~概要設計~基本設計~詳細設計~(開発・単体テスト)~結合テスト~ システムテスト~本番化~保全 という流れで、プログラムは保全でしか見ていませんでした。 しかし、24年間務めた会社を辞め、転職して今の小企業に居ます。 小企業なので、上述の 要件定義~以下すべて~保全 まで出来る人が派遣先が見つけやすいのです。 年齢も高いので、派遣先の年齢制限に引っかかる場合も多く贅沢は言えないのです。 そのため、保全でしかやっていなかったコーディングをやらざるを得ない状況で、 コードの勉強をしています。 「疑りぶかいあなたのためのオブジェクト指向再入門」は継続しない、との事、 残念ですが、忙しい前橋殿に置いては致し方ないと思います。 そこで、出来ましたら、Java の良い本をご紹介願えますと幸いです。 何卒、宜しくお願い致します。 晶夫
[この投稿を含むスレッドを表示] [この投稿を削除]
[1966] Re:疑りぶかいあなたのためのオブジェクト指向再入門
投稿者:(ぱ)こと管理人
2016/09/05 02:39:55

はじめまして。 >SE歴は24年になります。前橋殿より5歳上になります。 私自身割と大手のSIerにいる身ですので、私より年上の方がコード書きの勉強を されているとなると尊敬しますし励みになります。 >それが、昨日、「疑りぶかいあんたのためのオブジェクト指向再入門」 >を読ませて頂き、目からウロコが落ちました。 ありがとうございます。 >この連載は、まだ、続くと書いてありました。 >本当に期待しています。 すみません、「これから随時書き足していくつもりです」と書いたのが かれこれ10年以上前の話ですので、今から続きを書くかというとちょっとお約束 できかねるところではあります。 続きを書くとすると次のネタは「継承」ですが、よくある「Shapeを継承して PolylineやRectangleやCircleを作る」という例は、Pascalの可変レコード型や Cでそれを共用体と列挙型で真似する例のような「データメンバを拡張する例」としては なかなか便利でわかりやすいのですが、 メソッドのオーバーライドの例として、図形を描画するdraw()メソッドを作ろう、 となったあたりでかなりうさんくさくなります。よく入門書では出てくる例ですが、 実のところこの使い方は「間違い」だと私は思っています(本にも何度か書いていますが)。 その辺でうんうんうなっているうちに、10年過ぎた感じです……
[この投稿を含むスレッドを表示] [この投稿を削除]
[1965] 疑りぶかいあなたのためのオブジェクト指向再入門
投稿者:晶夫(あきお)
2016/09/02 15:39:38

前橋和弥 殿 晶夫と申します。 学生時代からPascal やC などを個人的に勉強してきて、就職と同時にSEになった 者です。 SE歴は24年になります。前橋殿より5歳上になります。 その私でも、オブジェクト指向に入れていませんでした。 正直、オブジェクト指向のメリットが分からず、Java や VB.Net や C# の勉強をしていて、 とにかく、全然、自分の物になっていませんでした。 それが、昨日、「疑りぶかいあんたのためのオブジェクト指向再入門」 を読ませて頂き、目からウロコが落ちました。 これから、本格的にオブジェクト指向を学ぶ自信になりました。 思わず、お礼が言いたくて、この投稿を致しました。 この連載は、まだ、続くと書いてありました。 本当に期待しています。 オブジェクト指向のメリットが分からず、先へ進めずにいたのが、 進めます。 とにかく、続きをお願いいたします。 ありがとうございました。 晶夫
[この投稿を含むスレッドを表示] [この投稿を削除]
[1964] Re:Apacheへのリクエストがタイムアウト
投稿者:stonehand
2016/08/03 08:01:20

ありがとうございました。 >一応、client_send.txtの末尾の、HTTPリクエストヘッダの終わりを示す >空行を抜いたら、同様のタイムアウトが返りました。 >念のための確認ですが、同様になっていないでしょうか。 client_send.txtに改行を加えて試したところ、正しく動作しました。 今後とも、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1963] Re:Apacheへのリクエストがタイムアウト
投稿者:(ぱ)こと管理人
2016/08/03 00:22:11

>>(2)client_send.txtをここに貼ってください。 >GET /index.html HTTP/1.1 >Accept: text/html, application/xhtml+xml, */* >Accept-Language: ja-JP >User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko >Accept-Encoding: gzip, deflate >Host: localhost:8001 >DNT: 1 >Connection: Keep-Alive 見たところ不審なところはないですし、これをコピーして作った client_send.txtで、当方では正常動作しました。 症状からして、 ・タイムアウトとはいえレスポンスが返ってきているので、  Apacheと通信すること自体はできている。 ・しかし、Apacheは、HTTPリクエストを最後まで受け取れず、  タイムアウトを返している。 という状況です。 一応、client_send.txtの末尾の、HTTPリクエストヘッダの終わりを示す 空行を抜いたら、同様のタイムアウトが返りました。 念のための確認ですが、同様になっていないでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1962] Re:Apacheへのリクエストがタイムアウト
投稿者:stonehand
2016/08/02 08:29:53

お手数をおかけしております。 >(1)TcpClient.javaの修正ですが、修正版のソースが「TcpClient.java(Apache版)」という > ファイル名で同梱されています。これを使ったのでないのなら、一度こちらで > 試していただけますか。 こちらでも同様にタイムアウトしました。 >(2)client_send.txtをここに貼ってください。 GET /index.html HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: ja-JP User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Accept-Encoding: gzip, deflate Host: localhost:8001 DNT: 1 Connection: Keep-Alive 以上ですが、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1961] Re:Apacheへのリクエストがタイムアウト
投稿者:(ぱ)こと管理人
2016/08/02 01:52:28

>書籍26-27ページの、client_send.txt、TcpClient.javaの内容を変更して実行すると >タイムアウトとなり、client_recv.txtの内容は以下のようになります。 >何が原因なのでしょうか。 情報ありがとうございます。 ただ、当方でも試しましたが再現しません。 念のためApacheのバージョンを2.4.23に上げてみましたが同じでした。 (1)TcpClient.javaの修正ですが、修正版のソースが「TcpClient.java(Apache版)」という  ファイル名で同梱されています。これを使ったのでないのなら、一度こちらで  試していただけますか。 (2)client_send.txtをここに貼ってください。 よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1960] Apacheへのリクエストがタイムアウト
投稿者:stonehand
2016/08/01 22:10:47

またまた、お世話になります。 書籍26-27ページの、client_send.txt、TcpClient.javaの内容を変更して実行すると タイムアウトとなり、client_recv.txtの内容は以下のようになります。 何が原因なのでしょうか。 よろしくお願いいたします。 HTTP/1.1 408 Request Timeout Date: Mon, 01 Aug 2016 12:49:29 GMT Server: Apache/2.4.23 (Win64) Content-Length: 221 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>408 Request Timeout</title> </head><body> <h1>Request Timeout</h1> <p>Server timeout waiting for the HTTP request from the client.</p> </body></html>
[この投稿を含むスレッドを表示] [この投稿を削除]
[1959] Re:書籍「Webサーバを…」の1.3.3について
投稿者:(ぱ)こと管理人
2016/08/01 01:02:12

>実際に先にブラウザを閉じてしまうと、TcpServerは「java.net.SocketException: Connection reset」の例外をcatchしてスタックトレースを吐いた後に終了します。 確認しました。 確かにIEで試すと、例外を吐いて終了しました。 ただ、Firefoxで試すと、やはり-1を返して無限ループに入りました。 本書は対象をIEとうたっているので何らかのフォローはしようと思いますが、 FirefoxとIEで動きがどう違うのか、現時点ではわかっていません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1958] 書籍「Webサーバを…」の1.3.3について
投稿者:E2E4E9E4
2016/07/30 00:31:48

お世話になります。 以前に1.5.4について質問させていただいたものです。 その節はありがとうございました。(お礼が遅れてすみません) 今回もまた質問させてください。 p24では、「( 先にブラウザを閉じてしまうと、ソケットが閉じられて、ソケット切断後はInputStream.read()は-1を返すのですが、TcpServerはそれに対するチェックを入れていないので無限ループに入ります……)」とあります。 これは、 「(TcpServerは、17行目でクライアントから終了マークである0を受け取るまで処理を継続するようになっていますが、本物のWebブラウザはこのような終了マークを送らないからです)」 とすべきではないでしょうか。 実際に先にブラウザを閉じてしまうと、TcpServerは「java.net.SocketException: Connection reset」の例外をcatchしてスタックトレースを吐いた後に終了します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1957] 最新版を導入、解決しました
投稿者:stonehand
2016/07/29 09:11:04

お手数をおかけしました。 ご指摘の通り、最新版を導入し正しく動作いたしました。 C:\>javac -version javac 1.8.0_101 C:\oza\src\chap01>javac TcpServer.java C:\oza\src\chap01>java TcpServer クライアントからの接続を待ちます。 今後とも、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1956] Re:コンパイルできない
投稿者:stonehand
2016/07/29 08:22:06

お世話になります。 >お使いのJavaが、Java6以前のものなのではないでしょうか。 >javac -versionで何が表示されますか? C:\>java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode) C:\>javac -version javac 1.6.0_21 となっています。 よろしく、お願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1955] Re:コンパイルできない
投稿者:(ぱ)こと管理人
2016/07/28 22:16:22

>例えば >C:\oza\src\chap01>javac TcpServer.java >TcpServer.java:6: '{' がありません。 > try (ServerSocket server = new ServerSocket(8001); これで見当が付きました。このtryの構文は、Java7から導入された try-with-resource文です。 http://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html お使いのJavaが、Java6以前のものなのではないでしょうか。 javac -versionで何が表示されますか? なお、この本の対象はJava8です。本の中に明記した個所があったのでは、 と思い探してみたのですが、あれ? 見当たらない……
[この投稿を含むスレッドを表示] [この投稿を削除]
[1954] Re:コンパイルできない
投稿者:stonehand
2016/07/28 14:30:44

お手数をおかけしております。 >・そもそもOSは何ですか? この本はWindowsを想定しているので、 Windows7Pro 64 bit > ソースの文字コードはShift-JIS, 改行はCR LFになっています。 >・どこからダウンロードしたファイルですか? ページのURLと > ファイル名を教えてください。 書籍8ページにあります http://kmaebashi.com/webserver/index.html より、ダウンロードはこちらから。 ./src_20160619.zip >・javacを実行したディレクトリに入っているファイルの一覧を教えてください。 Chap01ディレクトリの内容 C:\oza\src\chap01>dir /b C CSharp Modoki01 server_send.txt TcpClient.java TcpClient.java(Apache向け) TcpServer.java TcpServer.txt >・エラーメッセージをコピペして、ここに貼ってください。 例えば C:\oza\src\chap01>javac TcpServer.java TcpServer.java:6: '{' がありません。 try (ServerSocket server = new ServerSocket(8001); ^ TcpServer.java:6: ')' がありません。 try (ServerSocket server = new ServerSocket(8001); ^ TcpServer.java:8: ';' がありません。 FileInputStream fis = new FileInputStream("server_send.txt")) { ^ TcpServer.java:27: 'catch' への 'try' がありません。 } catch (Exception ex) { ^ TcpServer.java:27: ')' がありません。 } catch (Exception ex) { ^ TcpServer.java:27: 文ではありません。 } catch (Exception ex) { ^ TcpServer.java:27: ';' がありません。 } catch (Exception ex) { ^ TcpServer.java:6: 'try' への 'catch' または 'finally' がありません。 try (ServerSocket server = new ServerSocket(8001); ^ TcpServer.java:31: 構文解析中にファイルの終わりに移りました } ^ エラー 9 個 以上のようですが、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1953] Re:コンパイルできない
投稿者:(ぱ)こと管理人
2016/07/28 00:32:19

>「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」を購入し >悪戦苦闘しております。 こんにちは。お買い上げいただきありがとうございます。 > 始めの一歩、ソースをダウンロードし、TcpServer.javaおよびTcpClient.java等をコンパイルしようとし、 > >>javac *.java > >などとしましたが、エラーが出てしまい先に進めません。 >エラーの内容は、(がありませんとか、{がありませんとか等です。 本を見ながら手で打ち込んだのならともかく、ダウンロードしたソースで、 「(がありませんとか、{がありませんとか」レベルのコンパイルエラーが出るのは 考えにくいのですが… ・そもそもOSは何ですか? この本はWindowsを想定しているので、  ソースの文字コードはShift-JIS, 改行はCR LFになっています。 ・どこからダウンロードしたファイルですか? ページのURLと  ファイル名を教えてください。 ・javacを実行したディレクトリに入っているファイルの一覧を教えてください。 ・エラーメッセージをコピペして、ここに貼ってください。 よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1952] Re:PHPで掲示板を作りたい
投稿者:(ぱ)こと管理人
2016/07/28 00:13:08

>そんな私がこれからPHPを学ぶために掲示板を一から作っていきたいのですが、 >どのようにして始めればいいでしょうか? まず、私のサイトにある「PHPとMySQLで掲示板を作る」は、PHP ver.4の頃に 書いたものなので内容が古くなっておりお勧めできません。 Google等で検索のうえ、新しめの記事を探してみてはいかがでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1951] コンパイルできない
投稿者:stonehand
2016/07/27 17:22:42

 ばじめまして、よろしくお願いします。  このような質問をすると、対象読者ではないのではとお叱りを受けそうですが、 「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」を購入し 悪戦苦闘しております。  始めの一歩、ソースをダウンロードし、TcpServer.javaおよびTcpClient.java等をコンパイルしようとし、 >javac *.java などとしましたが、エラーが出てしまい先に進めません。 エラーの内容は、(がありませんとか、{がありませんとか等です。  初歩の初歩、基本的な質問で申し訳ありませんが、コンパイルの手順について詳しく教えていただけますか。よろしくお願い申し上げます。
[この投稿を含むスレッドを表示] [この投稿を削除]