K.Maebashi's BBS

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

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

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

[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 ご教授よろしくお願いいたします
[この投稿を含むスレッドを表示] [この投稿を削除]
[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の一番下のポート番号の変更を忘れている、 ということはないでしょうか? 当方でやってみたら、同じエラーが再現しました。 違っていましたらすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[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 にしたのですがうまくいきません
[この投稿を含むスレッドを表示] [この投稿を削除]
[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を指定すべきところ、やってないことに 起因するもので、この実験では問題ありません(本の中で説明していないのは ちょっと手抜きかもしれませんが)。他に何か出ていたりしないでしょうか。 あるいは、ファイアウォールとかアンチウィルスソフトとかで接続が 遮断されていないでしょうか。 すみません、これぐらいしか思いつきません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[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を入れているのでこれが原因なのかもしれません汗
[この投稿を含むスレッドを表示] [この投稿を削除]