QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 610|回复: 3

关于gcc

[复制链接]
发表于 2004-12-1 21:01:16 | 显示全部楼层 |阅读模式
gethostname
gethostbyname来得到本地IP时,
我用gcc -o test main.c可以编译出来
用g++ -o test main.c不能编译出来,它老说p->h_addr_list没有定义,头文件也没有 少啊,怎么回事?用g++为什么不行?
发表于 2004-12-2 10:21:42 | 显示全部楼层
贴出源码,我试了一下可以编译
回复

使用道具 举报

 楼主| 发表于 2004-12-2 13:11:48 | 显示全部楼层
[code:1]
#include <stdio.h>
#include <stdlib.h>
/*
#include <iostream>
#include <iomanip>
*/
#include <unistd.h>
#include <netdb.h>
void output(struct hostent const* p)
{
    /*
    std::cout<<p->h_name<<std::endl;
    std::cout<<(p->(h_addr))<<std::endl;
    */
    printf("offical name of host is: %s\n",p->h_name);
    int index=1;
    char ** pp=p->h_aliases;
    while(*pp)
    {
        printf("alias name %d is :%s\n",index,*pp);
        pp++;
        index++;
    }
    printf("address type is :%d , address length is :%d\n",p->h_addrtype,p->h_length);
    pp=p->h_addr_list;
    index=1;
    while(*pp)
    {
    printf("%s\n",inet_ntoa(*((struct in_addr*)(*pp))));
/*
      printf("ip address %d is :%d.%d.%d.%d\n",index,(unsignedchar)(*pp)[0],(unsigned  char)(*pp)[1],(unsigned char)(*pp)[2],(unsigned)(*pp)[3]);
*/
        pp++;
        index++;
    }
//    printf("%s\n",inet_ntoa(*((struct in_addr*)p->h_addr)));
}
void showHostInfo(char *buffer,size_t size)
{
    if(gethostname(buffer,size)==0)
    {
        printf("hostname is :%s\n",buffer);
        struct hostent* phst=gethostbyname(buffer);
        output(phst);
    }
    endhostent();
}
int main(int argc,char* argv[])
{
    char buffer[100]="\0";
    printf("\n*****************************\n");
    showHostInfo(buffer,sizeof(buffer));
    printf("*****************************\n\n");
    return 0;
}

[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-12-2 13:17:34 | 显示全部楼层
还用我用的是红旗4.1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 23:24 , Processed in 0.072012 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表