- 締切済み
ホスト名が認識できない
Solaris+Cです。 対向装置(VBで作成)と送受信するために、ソケットを使用している以下のようなコードがあります。 iRet = waitAccept( giSocket, &sockAddr, &iSockAddrLen, &giAccept); /* iRetがエラーの場合のエラー処理(割愛)*/ /* IPアドレスからホスト名取得 */ hentpName = gethostbyaddr( (char *)&(sockAddr.sin_addr), 4, AF_INET); ここで、waitAcceptは正常に抜けてくるのですが、gethostbyaddrが常にNULLを返してきます。 gethostbyaddrでホスト名を取得させるためには、どこかに何らかの設定が必要なのでしょうか? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mac_res
- ベストアンサー率36% (568/1571)
下記プログラムは動きますか? -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> extern int h_errno; char *prog; int main(int argc, char *argv[]) { struct hostent *hp; struct sockaddr_in to; prog = argv[0]; if (argc != 2) { fprintf(stderr," Usage: %s ipaddr\n", prog); exit (EINVAL); } inet_aton(argv[1], &to.sin_addr); if ((hp = gethostbyaddr((char *)&to.sin_addr, 4, AF_INET)) == NULL) { fprintf(stderr, "error in gethostbyaddr() = %d\n", h_errno); } printf("hostname = %s\n", hp->h_name); return 0; }
補足
inet_atonが未定義だと、コンパイルで怒られますが・・・ どうすればよいのでしょう?