#include <WinSock2.h> #include<ws2tcpip.h> #include <stdio.h> #include<windows.h> #pragma comment(lib, "Ws2_32.lib") struct hostent* FAR gethostbyname( const char *name ) ; int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); int WSACleanup(void); int main(int argc, char **argv) { // 调用 WSAStartup()函数,进行初始化操作 WSADATA wsaData; int iResult; DWORD dwError; int i = 0; struct hostent *remoteHost; char *host_name; struct in_addr addr; char **pAlias; if(argc != 2){ printf("usage: GetHostIP hostname\n"); return 1; } iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { printf("WSAStartup failed: %d\n", iResult); return 1; } host_name = argv[1]; printf("Calling gethostbyname with %s\n", host_name); remoteHost = gethostbyname(host_name); if(remoteHost == NULL){ dwError = WSAGetLastError(); if(dwError != 0){ if(dwError == WSAHOST_NOT_FOUND){ printf("No data record found\n"); return 1; }else { printf("Function failed with error:%d\n", dwError); return 1; } } } else{ printf("Function returned:\n"); printf("\tOfficial name: %s\n", remoteHost->h_name); for(pAlias = remoteHost->h_aliases; *pAlias != 0;pAlias++){ printf("\tAddress type: "); switch (remoteHost->h_addrtype){ case AF_INET: printf("AF_INET\n"); break; case AF_NETBIOS: printf("AF_NETBIOS\n"); break; default: printf("%d\n",remoteHost->h_addrtype); break; } printf("\tAddress length:%d\n", remoteHost->h_length); i=0; if(remoteHost->h_addrtype == AF_INET){ while(remoteHost->h_addr_list[i] != 0){ addr.s_addr = *(u_long *)remoteHost->h_addr_list[i++]; printf("\tIP Address #%d: %s\n",i, inet_ntoa(addr)); } } else if(remoteHost->h_addrtype == AF_NETBIOS){ printf("NETBIOS address was returned\n"); } } return 0; } // 调用 WSACleanup()函数,注销程序,释放资源 iResult = WSACleanup(); if (iResult != 0) { printf("WSACleanup failed: %d\n", iResult); return -1; } return 0; }
标签:iResult,return,name,代码,printf,new,remoteHost,addr From: https://www.cnblogs.com/JLPeng/p/17817649.html