K.Maebashi's BBS

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

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


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


[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

ご教授よろしくお願いいたします
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[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の一番下のポート番号の変更を忘れている、
ということはないでしょうか?
当方でやってみたら、同じエラーが再現しました。

違っていましたらすみません。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[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

にしたのですがうまくいきません

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



[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を指定すべきところ、やってないことに
起因するもので、この実験では問題ありません(本の中で説明していないのは
ちょっと手抜きかもしれませんが)。他に何か出ていたりしないでしょうか。

あるいは、ファイアウォールとかアンチウィルスソフトとかで接続が
遮断されていないでしょうか。

すみません、これぐらいしか思いつきません。

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



[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を入れているのでこれが原因なのかもしれません汗
[ この投稿を含むスレッドを表示] [ この投稿を削除]