- ベストアンサー
ライブラリ??
VCをつかってコーディングしています。 C言語仕様のネットワークプログラミングです。 socketをつくりデータのやり取りをするのですが gethostbyname()という関数が動作しません。 ちゃんとコンパイルもビルドもとおります。 ライブラリもwsock32.libやws2_32.libをリンクしています。 なにが原因なのかわかりません。 WINDOWSがまずいのでしょうか? 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、honiyonです。 http://kaf.tri6.net/code/wsock_r.html ここに一通りの関数の説明がのっています。 他にも、socketやgethostbyaddr等の関数の単語で検索するとサンプルソースがたくさん見つかりますよ。 それをみて自分のコードとの差異を調べるのも良いバグ発見方法になります。 また、もし何らかのエラーが起きているのであればGetLastErrorでソケット関数のエラーコードがとれたと思うのでそれを使ってみるのも良いと思います。戻り値が0ならとりあえず関数は成功しているので問題は周辺環境ですね(Esnaさんが仰るように) 参考になれば幸いです(..
その他の回答 (4)
- Esna
- ベストアンサー率36% (4/11)
こんにちは. Esnaです. あと,思いつくものとしては,gethostbyname()関数は,普通の場合クライアント側のプログラムが,サーバの名前からIPアドレスを知るために使います. s_hostent = gethostbyname(servername); のような感じで…. 引数として,servernameが渡っているかを確認ください.あとは,クライアントマシンにservername--->サーバのIPアドレスを調べるためにファイルか,DNSのような手段があることが必要です.
- Esna
- ベストアンサー率36% (4/11)
こんにちは.Esnaです. はずしているかもしれませんが… Windowsでプログラミングされているみたいですが, gethostbyname()関数が,ホスト名--->IPアドレス変換を行うために必要なファイル(LMHOSTS)(UNIX上でのhostsやhosts.equiv)かDNSの設定は,行っていますか?
月並みですが、、 WSAStartup() が抜けてるとか
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 動作しない、だけでは何も分からないです。 具体的に「動作しない」とはどんな状態を指しているのでしょうか?
補足
すみません。 ネットワーク上のホストのエントリを取得ができないということです。 毎回戻り値がNULLになってかえってきます。 これは自分のマシンのhostsファイルに書き込まれているホスト名でよろしいのでしょうか? 宜しくお願いします。
お礼
ありがとうございました。 たいへん勉強になりました。