• ベストアンサー

ライブラリ??

VCをつかってコーディングしています。 C言語仕様のネットワークプログラミングです。 socketをつくりデータのやり取りをするのですが gethostbyname()という関数が動作しません。 ちゃんとコンパイルもビルドもとおります。 ライブラリもwsock32.libやws2_32.libをリンクしています。 なにが原因なのかわかりません。 WINDOWSがまずいのでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • honiyon
  • ベストアンサー率37% (331/872)
回答No.4

こんにちは、honiyonです。   http://kaf.tri6.net/code/wsock_r.html   ここに一通りの関数の説明がのっています。   他にも、socketやgethostbyaddr等の関数の単語で検索するとサンプルソースがたくさん見つかりますよ。   それをみて自分のコードとの差異を調べるのも良いバグ発見方法になります。   また、もし何らかのエラーが起きているのであればGetLastErrorでソケット関数のエラーコードがとれたと思うのでそれを使ってみるのも良いと思います。戻り値が0ならとりあえず関数は成功しているので問題は周辺環境ですね(Esnaさんが仰るように)   参考になれば幸いです(..

fm0606
質問者

お礼

ありがとうございました。 たいへん勉強になりました。

その他の回答 (4)

  • Esna
  • ベストアンサー率36% (4/11)
回答No.5

こんにちは. Esnaです. あと,思いつくものとしては,gethostbyname()関数は,普通の場合クライアント側のプログラムが,サーバの名前からIPアドレスを知るために使います. s_hostent = gethostbyname(servername); のような感じで…. 引数として,servernameが渡っているかを確認ください.あとは,クライアントマシンにservername--->サーバのIPアドレスを調べるためにファイルか,DNSのような手段があることが必要です.

  • Esna
  • ベストアンサー率36% (4/11)
回答No.3

こんにちは.Esnaです. はずしているかもしれませんが…  Windowsでプログラミングされているみたいですが, gethostbyname()関数が,ホスト名--->IPアドレス変換を行うために必要なファイル(LMHOSTS)(UNIX上でのhostsやhosts.equiv)かDNSの設定は,行っていますか?

noname#2009
noname#2009
回答No.2

月並みですが、、 WSAStartup() が抜けてるとか

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.1

こんにちは、honiyonです。   動作しない、だけでは何も分からないです。   具体的に「動作しない」とはどんな状態を指しているのでしょうか?

fm0606
質問者

補足

すみません。 ネットワーク上のホストのエントリを取得ができないということです。 毎回戻り値がNULLになってかえってきます。 これは自分のマシンのhostsファイルに書き込まれているホスト名でよろしいのでしょうか? 宜しくお願いします。

関連するQ&A