K.Maebashi's BBS

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

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


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


[1988] Re:26p~27p
返信


投稿者:kokonotu
2017/04/27 16:29:13

Link:
>追加情報ありがとうございます。
>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

Link:
追加情報ありがとうございます。
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

Link:
>こんにちは。読んでいただきありがとうございます。
>
>>>【結果】 
>>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

Link:
こんにちは。読んでいただきありがとうございます。

>>【結果】 
>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

Link:
初めて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

Link:
>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

Link:
先日「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

Link:
1章読み終わりました。
HTTPのことが理解できてとても勉強になりました。
2章以降でも質問させてください。

[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1979] Re:ubuntuのgccで出来てvisualstudioで出来ない
返信


投稿者:(ぱ)こと管理人
2017/02/05 17:31:56

Link:
>基礎からの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

Link:
基礎からの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

Link:
>そこで、出来ましたら、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

Link:
前橋 殿

返信ありがとうございます。
私は小企業のIT派遣会社で働いています。
現在、常駐先が見つからず、本社にて「待機」の状況です。
そのため、この様な掲示板にカキコできる時間が取れています。


>私自身割と大手のSIerにいる身ですので、私より年上の方がコード書きの勉強を
>されているとなると尊敬しますし励みになります。

私の24年間は大手の製造メーカーで従業員は2万人規模の大会社でした。
そこで、「生産管理システム・MES」の
要件定義〜概要設計〜基本設計〜詳細設計〜(開発・単体テスト)〜結合テスト〜
システムテスト〜本番化〜保全
という流れで、プログラムは保全でしか見ていませんでした。
しかし、24年間務めた会社を辞め、転職して今の小企業に居ます。

小企業なので、上述の 要件定義〜以下すべて〜保全
まで出来る人が派遣先が見つけやすいのです。
年齢も高いので、派遣先の年齢制限に引っかかる場合も多く贅沢は言えないのです。
そのため、保全でしかやっていなかったコーディングをやらざるを得ない状況で、
コードの勉強をしています。

「疑りぶかいあなたのためのオブジェクト指向再入門」は継続しない、との事、
残念ですが、忙しい前橋殿に置いては致し方ないと思います。

そこで、出来ましたら、Java の良い本をご紹介願えますと幸いです。
何卒、宜しくお願い致します。

晶夫
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1966] Re:疑りぶかいあなたのためのオブジェクト指向再入門
返信


投稿者:(ぱ)こと管理人
2016/09/05 02:39:55

Link:
はじめまして。

>SE歴は24年になります。前橋殿より5歳上になります。

私自身割と大手のSIerにいる身ですので、私より年上の方がコード書きの勉強を
されているとなると尊敬しますし励みになります。

>それが、昨日、「疑りぶかいあんたのためのオブジェクト指向再入門」
>を読ませて頂き、目からウロコが落ちました。

ありがとうございます。

>この連載は、まだ、続くと書いてありました。
>本当に期待しています。

すみません、「これから随時書き足していくつもりです」と書いたのが
かれこれ10年以上前の話ですので、今から続きを書くかというとちょっとお約束
できかねるところではあります。
続きを書くとすると次のネタは「継承」ですが、よくある「Shapeを継承して
PolylineやRectangleやCircleを作る」という例は、Pascalの可変レコード型や
Cでそれを共用体と列挙型で真似する例のような「データメンバを拡張する例」としては
なかなか便利でわかりやすいのですが、
メソッドのオーバーライドの例として、図形を描画するdraw()メソッドを作ろう、
となったあたりでかなりうさんくさくなります。よく入門書では出てくる例ですが、
実のところこの使い方は「間違い」だと私は思っています(本にも何度か書いていますが)。

その辺でうんうんうなっているうちに、10年過ぎた感じです……
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1965] 疑りぶかいあなたのためのオブジェクト指向再入門
返信


投稿者:晶夫(あきお)
2016/09/02 15:39:38

Link:
前橋和弥 殿

晶夫と申します。
学生時代からPascal やC などを個人的に勉強してきて、就職と同時にSEになった
者です。
SE歴は24年になります。前橋殿より5歳上になります。

その私でも、オブジェクト指向に入れていませんでした。
正直、オブジェクト指向のメリットが分からず、Java や VB.Net や C# の勉強をしていて、
とにかく、全然、自分の物になっていませんでした。
それが、昨日、「疑りぶかいあんたのためのオブジェクト指向再入門」
を読ませて頂き、目からウロコが落ちました。

これから、本格的にオブジェクト指向を学ぶ自信になりました。

思わず、お礼が言いたくて、この投稿を致しました。

この連載は、まだ、続くと書いてありました。
本当に期待しています。

オブジェクト指向のメリットが分からず、先へ進めずにいたのが、
進めます。

とにかく、続きをお願いいたします。

ありがとうございました。
晶夫
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1964] Re:Apacheへのリクエストがタイムアウト
返信


投稿者:stonehand
2016/08/03 08:01:20

Link:
ありがとうございました。

>一応、client_send.txtの末尾の、HTTPリクエストヘッダの終わりを示す
>空行を抜いたら、同様のタイムアウトが返りました。
>念のための確認ですが、同様になっていないでしょうか。

client_send.txtに改行を加えて試したところ、正しく動作しました。
今後とも、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1963] Re:Apacheへのリクエストがタイムアウト
返信


投稿者:(ぱ)こと管理人
2016/08/03 00:22:11

Link:
>>(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

Link:
お手数をおかけしております。

>(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

Link:
>書籍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

Link:
またまた、お世話になります。
書籍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

Link:
>実際に先にブラウザを閉じてしまうと、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

Link:
お世話になります。
以前に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

Link:
お手数をおかけしました。
ご指摘の通り、最新版を導入し正しく動作いたしました。

C:\>javac -version
javac 1.8.0_101

C:\oza\src\chap01>javac TcpServer.java

C:\oza\src\chap01>java TcpServer
クライアントからの接続を待ちます。

今後とも、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より古い投稿]