18,829
社区成员




#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
int main(int argc,char* argv[])
{
char host_name[128]={0};//这里要这样初始化
gethostname(host_name, sizeof(host_name));
printf("host_name:%s\n",host_name);
struct addrinfo *ailist=NULL,*aip=NULL;
struct sockaddr_in *saddr;
char *addr;
int ret=getaddrinfo(host_name,"ftp",NULL,&ailist);
for(aip=ailist; aip!=NULL; aip=aip->ai_next)
{
if(aip->ai_family==AF_INET)
{
saddr=(struct sockaddr_in*)aip->ai_addr;
addr=inet_ntoa(saddr->sin_addr);
}
printf("addr:%s\n",addr);
}
getchar();
return 0;
}
我在ubuntu14.04下编译运行都没报错[/quote]
哦,忘了加c99的参数,我猜测getaddrinfo gethostname struct addrinfo 的定义并不在c99标准中[/quote]
是啊,本想放弃的,我去掉了-std=c99这个编译选项后,就可以顺利编译了。果然这个原因,谢谢一直的关注和解答!!! IT届因你二温暖。
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
int main(int argc,char* argv[])
{
char host_name[128]={0};//这里要这样初始化
gethostname(host_name, sizeof(host_name));
printf("host_name:%s\n",host_name);
struct addrinfo *ailist=NULL,*aip=NULL;
struct sockaddr_in *saddr;
char *addr;
int ret=getaddrinfo(host_name,"ftp",NULL,&ailist);
for(aip=ailist; aip!=NULL; aip=aip->ai_next)
{
if(aip->ai_family==AF_INET)
{
saddr=(struct sockaddr_in*)aip->ai_addr;
addr=inet_ntoa(saddr->sin_addr);
}
printf("addr:%s\n",addr);
}
getchar();
return 0;
}
我在ubuntu14.04下编译运行都没报错[/quote]
哦,忘了加c99的参数,我猜测getaddrinfo gethostname struct addrinfo 的定义并不在c99标准中[/quote]
按照您的说法,我加了这个头文件,gcc编译依然会报同样的错误,还有什么解决办法吗?
[/quote]
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
int main(int argc,char* argv[])
{
char host_name[128]={0};//这里要这样初始化
gethostname(host_name, sizeof(host_name));
printf("host_name:%s\n",host_name);
struct addrinfo *ailist=NULL,*aip=NULL;
struct sockaddr_in *saddr;
char *addr;
int ret=getaddrinfo(host_name,"ftp",NULL,&ailist);
for(aip=ailist; aip!=NULL; aip=aip->ai_next)
{
if(aip->ai_family==AF_INET)
{
saddr=(struct sockaddr_in*)aip->ai_addr;
addr=inet_ntoa(saddr->sin_addr);
}
printf("addr:%s\n",addr);
}
getchar();
return 0;
}
我在ubuntu14.04下编译运行都没报错[/quote]
哦,忘了加c99的参数,我猜测getaddrinfo gethostname struct addrinfo 的定义并不在c99标准中[/quote]
真的不行,很无奈,我是在Red Hat Enterprise Linux Server release 6.4环境下编译的,还是不行,哎,有点想放弃的冲动。无奈啊,为什么????????
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
int main(int argc,char* argv[])
{
char host_name[128]={0};//这里要这样初始化
gethostname(host_name, sizeof(host_name));
printf("host_name:%s\n",host_name);
struct addrinfo *ailist=NULL,*aip=NULL;
struct sockaddr_in *saddr;
char *addr;
int ret=getaddrinfo(host_name,"ftp",NULL,&ailist);
for(aip=ailist; aip!=NULL; aip=aip->ai_next)
{
if(aip->ai_family==AF_INET)
{
saddr=(struct sockaddr_in*)aip->ai_addr;
addr=inet_ntoa(saddr->sin_addr);
}
printf("addr:%s\n",addr);
}
getchar();
return 0;
}
我在ubuntu14.04下编译运行都没报错[/quote]
哦,忘了加c99的参数,我猜测getaddrinfo gethostname struct addrinfo 的定义并不在c99标准中
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
int main(int argc,char* argv[])
{
char host_name[128]={0};//这里要这样初始化
gethostname(host_name, sizeof(host_name));
printf("host_name:%s\n",host_name);
struct addrinfo *ailist=NULL,*aip=NULL;
struct sockaddr_in *saddr;
char *addr;
int ret=getaddrinfo(host_name,"ftp",NULL,&ailist);
for(aip=ailist; aip!=NULL; aip=aip->ai_next)
{
if(aip->ai_family==AF_INET)
{
saddr=(struct sockaddr_in*)aip->ai_addr;
addr=inet_ntoa(saddr->sin_addr);
}
printf("addr:%s\n",addr);
}
getchar();
return 0;
}
我在ubuntu14.04下编译运行都没报错