- PR -

connect関数で”No route to host”というエラーが発生する。

投稿者投稿内容
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2005-01-04 16:29
ソケットプログラムの練習をしています。

下記クライアントプログラムの("127.0.0.1")を("192.168.1.XX")と書き換えて、
サーバープラグラムが起動していない端末でクライアントプログラムを実行すると、
connect関数で”No route to host”というエラーが発生します。
("127.0.0.1")では正常に動作します。
pingは通っていますし、IPやPORT番号に間違いはありません。
基本的なことですいませんが、エラーの原因を教えてください。

addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(PORT);
if (connect(fd_socket, (struct sockaddr *) &addr,
sizeof(addr)) == -1) {
perror("client: connect");
return 1;
}
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-01-04 17:33
デフォルト・ゲートウェイの設定しとる?
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2005-01-04 18:31
コブラさんありがとうございます。

デフォルト・ゲートウェイの設定は、以下のとおりです。

[root@localhost root]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

"192.168.1.XX"は、LAN内の端末のアドレスなので、デフォルト・ゲートウェイは関係ない
のではないかと思われます。

コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-01-04 19:27
>192.168.1.XX

というホストが LAN 上に存在しとらんから。
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2005-01-04 20:54
ping 192.168.1.XX
では、返答が返ってくるので192.168.1.XXというホストはLAN上に存在しています。

>192.168.1.XX

>というホストが LAN 上に存在しとらんから。

当方の勉強不足だと考えられますが、上記の意味がどういう意味なのか解りません。

済みませんが教えて頂けますか?

コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-01-04 22:55
意味も判らんとよう、「存在してます」と応えられるもんや (プ
ニック
ベテラン
会議室デビュー日: 2004/10/20
投稿数: 60
投稿日時: 2005-01-05 10:52
はじめまして。

引用:

下記クライアントプログラムの("127.0.0.1")を("192.168.1.XX")と書き換えて、
サーバープラグラムが起動していない端末でクライアントプログラムを実行すると、
connect関数で”No route to host”というエラーが発生します。



192.168.1.XX上のサーバプログラムの問題のような気がします。
サーバプログラムのaddr.sin_addr.s_addr は変更されましたか?
もし127.0.0.1としていたら通信できないような気がします。
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2005-01-05 21:59
ニックさんありがとうございます。
サーバプログラムのaddr.sin_addr.s_addrはINADDR_ANYなので問題ありません。

コブラさんの言うとおり,ネットワークの基礎を勉強します。

スキルアップ/キャリアアップ(JOB@IT)