linux读出网络名,Linux 网络获取主机名

对应客户端,当我们要得到连接的端口号时在connect调用成功后使用可得到

系统分配的端口号.对于服务端,我们用INADDR_ANY填充后,为了得到连接的IP我们可以在accept调用成功后 使用而得到IP地址.

在网络上有许多的默认端口和服务,比如端口21对ftp80对应WWW.为了得到指定的端口号的服务 我们可以调用第四个函数,

相反为了得到端口号可以调用第三个函数.

1.[代码][C/C++]代码

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc ,char **argv)

{

struct sockaddr_in addr;

struct hostent *host;

char **alias;

if(argc<2)

{

fprintf(stderr,"Usage:%s hostname|ip..\n\a",argv[0]);

exit(1);

}

argv++;

for(;*argv!=NULL;argv++)

{

/* 这里我们假设是IP*/

if(inet_aton(*argv,&addr.sin_addr)!=0)

{

host=gethostbyaddr((char *)&addr.sin_addr,4,AF_INET);

printf("Address information of Ip %s\n",*argv);

}

else

{

/* 失败,难道是域名?*/

host=gethostbyname(*argv); printf("Address information

of host %s\n",*argv);

}

if(host==NULL)

{

/* 都不是 ,算了不找了*/

fprintf(stderr,"No address information of %s\n",*argv);

continue;

}

printf("Official host name %s\n",host->h_name);

printf("Name aliases:");

for(alias=host->h_aliases;*alias!=NULL;alias++)

printf("%s ,",*alias);

printf("\nIp address:");

for(alias=host->h_addr_list;*alias!=NULL;alias++)

printf("%s ,",inet_ntoa(*(struct in_addr *)(*alias)));

}

}