C++域名解析代码段

来源:互联网 发布:ai软件下载教程 编辑:程序博客网 时间:2024/05/22 07:01

C++域名解析代码段  

#include <Winsock.h>
#include "atlstr.h"
#pragma comment(lib, "ws2_32.lib")

typedef struct sServer 
{
 USHORT nPort;
 char szIp[256];
}Server;

void Domain()
{
 char ch[256];

 printf("please input URL:");
 scanf_s("%s",&ch);
 
 HOSTENT *host = NULL;

 host = ::gethostbyname(ch);

 CString strIP;
 //char *strIP;
 int nPort = 0;

 if(host == NULL) return;

 char *ss = host->h_name;

 sockaddr_in sa;

 for(int nAdapter=0;host->h_addr_list[nAdapter];nAdapter++)
 {
  memcpy(&sa.sin_addr.s_addr, host->h_addr_list[nAdapter], host->h_length);
  strIP = inet_ntoa(sa.sin_addr);
  nPort = ntohs(sa.sin_port);
 }

 printf("解析得到的Ip=%s,Port=%d",strIP,nPort);
}

//补充知识说明:
//(1)使用 HOSTENT,需要加载头文件 <Winsock.h>;
//(2)使用CString, 需要加载头文件 "atlstr.h"
//(3)一个函数只能有一个返回值,如果想要一个函数有多个返回值的时候,最好把这几个返回值定义成一个结构体,或用形参的方式;
//(4)gethostbyname(),inet_ntoa(),ntohs(),需要添加#pragma comment(lib, "ws2_32.lib")
//或者 project->settings->link->library module中加入库ws2_32.lib  

0 0
原创粉丝点击