关于gethostbyaddr的问题

aaaaabbctv 2004-11-21 03:28:36
我想通过gethostbyaddr返回机器的主机名字,但就是按照msdn的例子也不行,我用watch看取回的值是0x00000000,msdn的程序如下:
//----------------------
// Declare and initialize variables
hostent* remoteHost;
char* host_name;
unsigned int addr;

//----------------------
// User inputs name of host
printf("Input name of host: ");
host_name = (char*) malloc(sizeof(char*)*16);
fgets(host_name, 16, stdin);

// If the user input is an alpha name for the host, use gethostbyname()
// If not, get host by addr (assume IPv4)
if (isalpha(host_name[0])) { /* host address is a name */
host_name[strlen(host_name)-1] = '\0'; /* NULL TERMINATED */
remoteHost = gethostbyname(host_name);
}
else {
addr = inet_addr(host_name);
remoteHost = gethostbyaddr((char *) &addr, 4, AF_INET);
}

if (WSAGetLastError() != 0) {
if (WSAGetLastError() == 11001)
printf("Host not found...\nExiting.\n");
}
else
printf("error#:%ld\n", WSAGetLastError());

// The remoteHost structure can now be used to
// access information about the host

想请教一下
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingzai 2004-11-22
  • 打赏
  • 举报
回复
WSADATA wsaData;
if (WSAStartup(MAKEWORD (1,1),&wsaData) != 0)
{
// Handle error here
}
//also dns server need support it
aaaaabbctv 2004-11-22
  • 打赏
  • 举报
回复
up
aaaaabbctv 2004-11-22
  • 打赏
  • 举报
回复
谢谢,是没设好环境
barsteng 2004-11-22
  • 打赏
  • 举报
回复
kingzai的意思是你有没有在程序中初始化socket环境?
aaaaabbctv 2004-11-22
  • 打赏
  • 举报
回复
什么意思?能说明白些吗?那应该怎么解决呢?
aaaaabbctv 2004-11-21
  • 打赏
  • 举报
回复
我知道,应该是判断输入的是什么,是名称则用name,不然用addr,但这个程序也应该能取到remoteHost吧,现在无论是输入名称还是地址,我查到remoteHost的值都是0x0000000,不知道是什么原因?难道是这个函数不能用吗
sharkhuang 2004-11-21
  • 打赏
  • 举报
回复
addr 是ip地址不是hostname

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧