主题:利用gethostname获取本机的名称,并输出其IP地址的程序错在哪里??
利用gethostname获取本机的名称,并输出其IP地址
#pragma comment(lib,"ws2_32.lib")
#include<STDIO.H>
#include<WINSOCK2.H>
int main()
{
WSAData wsaData;
int ret=WSAStartup(WINSOCK_VERSION,&wsaData);
if(ret!=0){
printf("%d\n",ret);
return -1;
}
else {
printf("High:%xUse:%x\n",wsaData.wHighVersion,wsaData.wVersion);
}
char *name;
int namelen=sizeof(*name);
if(gethostname(name,namelen)!=0){
printf("gethostname 失败");
return -1;
}
else {
HOSTENT *host=gethostbyname(name);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
struct in_addr addr;
memset(&addr,0,sizeof(addr));
if(host !=NULL){
for(int i=0;host->h_addr_list[i]!=NULL;i++){
memcpy(&addr.S_un.S_addr,
host->h_addr_list[i],
host->h_length);
}
}
printf("%s: %s\n",host->h_name,inet_ntoa(addr));
}
WSACleanup();
return 0;
}
这是我写的程序,不知道为什么是gethostname失败
#pragma comment(lib,"ws2_32.lib")
#include<STDIO.H>
#include<WINSOCK2.H>
int main()
{
WSAData wsaData;
int ret=WSAStartup(WINSOCK_VERSION,&wsaData);
if(ret!=0){
printf("%d\n",ret);
return -1;
}
else {
printf("High:%xUse:%x\n",wsaData.wHighVersion,wsaData.wVersion);
}
char *name;
int namelen=sizeof(*name);
if(gethostname(name,namelen)!=0){
printf("gethostname 失败");
return -1;
}
else {
HOSTENT *host=gethostbyname(name);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
struct in_addr addr;
memset(&addr,0,sizeof(addr));
if(host !=NULL){
for(int i=0;host->h_addr_list[i]!=NULL;i++){
memcpy(&addr.S_un.S_addr,
host->h_addr_list[i],
host->h_length);
}
}
printf("%s: %s\n",host->h_name,inet_ntoa(addr));
}
WSACleanup();
return 0;
}
这是我写的程序,不知道为什么是gethostname失败