K.Maebashi's BBS

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

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


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


[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
クライアントからの接続を待ちます。

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



[1956] Re:コンパイルできない
返信


投稿者:stonehand
2016/07/29 08:22:06

Link:
お世話になります。
>お使いの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

Link:
>例えば
>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

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

>・そもそも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

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

Link:
>そんな私がこれからPHPを学ぶために掲示板を一から作っていきたいのですが、
>どのようにして始めればいいでしょうか?

まず、私のサイトにある「PHPとMySQLで掲示板を作る」は、PHP ver.4の頃に
書いたものなので内容が古くなっておりお勧めできません。

Google等で検索のうえ、新しめの記事を探してみてはいかがでしょうか。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より新しい投稿] [ より古い投稿]