#include <windows.h> #include <winsock.h> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") #define STATUS_FAILED 0xFFFF void main(int argc, char **argv) { WSADATA wsaData; char szHostname[100]={0}; HOSTENT *pHostEnt; int nAdapter = 0; struct sockaddr_in sAddr; FILE *fp, *result; char domain_name[100]; if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0){ fprintf(stderr,"WSAStartup failed: %d/n",GetLastError()); ExitProcess(STATUS_FAILED); } if ((fp = fopen(argv[1],"r")) == NULL) { printf("open test.txt fail!/n"); } if ((result = fopen("result.txt","w")) == NULL) { printf("creat result.txt fail!/n"); } while(!feof(fp)) { fgets(domain_name, 100, fp); if((pHostEnt = gethostbyname(domain_name)) == NULL) { printf("%s gethostbyname fail./n",domain_name); }else{ while(pHostEnt->h_addr_list[nAdapter]) { memcpy(&sAddr.sin_addr.s_addr, pHostEnt->h_addr_list[nAdapter], pHostEnt->h_length); printf("%s/tAddress:%s/n",pHostEnt->h_name, inet_ntoa(sAddr.sin_addr)); fputs(domain_name, result); fputs("/t", result); fputs(inet_ntoa(sAddr.sin_addr), result); fputs("/n", result ); nAdapter++; } } } WSACleanup(); return; }