C++完成域名解析
来源:互联网 发布:网络策划公司 编辑:程序博客网 时间:2024/05/29 11:55
network类:
自定义network.h头文件
#ifndef _WINSOCK_DEPRECATED_NO_WARNINGS#define _WINSOCK_DEPRECATED_NO_WARNINGS#endif#ifndef _CRT_SECURE_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#endif#ifndef _NetWorkAPI_#define _NetWorkAPI_#include<WinSock2.h>#pragma comment(lib,"ws2_32.lib")class network{public: network(); ~network();protected: int err; char *IpAddr[8]; //存域名的ip地址(可能存在多个ip地址) bool gethostip(); int True;//标记有效地IP地址};#endif
类代码实现:
#include"network.h"#include <iostream>network::~network(){ for (int i = 0; i < 8; i++) { if (*(IpAddr + i)) delete[] *(IpAddr + i); else break; }}network::network(){ memset(IpAddr, NULL, 8); err = gethostip();}bool network::gethostip(){ //加载套接字库 WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(1, 1); //初始化Socket动态连接库,请求1.1版本的winsocket库 err = WSAStartup(wVersionRequested, &wsaData); if (LOBYTE(wsaData.wVersion) != 1 || //判断请求的winsocket是不是1.1的版本 HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); //清盘 return false; //终止对winsocket使用 } //WSADATA ws; //WSAStartup(MAKEWORD(2,2),&ws);// char http[] = "www.myvip6.com"; //访问服务器域名 SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//建立socket if (sock == INVALID_SOCKET) { std::cout << "建立访问socket套接字失败!" << std::endl; return false; } hostent* host = gethostbyname(http);//取得主机的IP地址 if (host == NULL) { //std::cout << "主机处于没有联网状态;" << std::endl; return false; } in_addr addr; for (int i = 0;; i++) { char *p = host->h_addr_list[i]; if (p == NULL) break; memcpy(&addr.S_un.S_addr, p, host->h_length); *(IpAddr + i) = new char[strlen(inet_ntoa(addr)) + 1]; strcpy(*(IpAddr + i), inet_ntoa(addr)); //std::cout << *(IpAddr + i); } return true;}
通过socket完成域名的解析
0 0
- C++完成域名解析
- c语言实现域名解析
- c语言实现域名解析
- C#DNS域名解析工具(DnsLookup)
- linux c实现dns域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 域名解析
- 《C语言及程序设计》实践参考——学生人数没个准
- 《C语言及程序设计》实践项目——动态数组
- 包package,权限修饰符
- Java基础:String、StringBuffer、基本数据类型包装类
- LeetCode-70 Climbing Stairs(斐波那契数列)
- C++完成域名解析
- bfgs拟牛顿法
- 自己理解的oracle的概念
- MVC 用户登陆(验证码)
- JAVA中Iterator的具体作用
- Ruby on Rails,一次讲透对象之间的关联关系,永远忘不了
- Linux中Python安装与配置(CentOS-6.5:Python-2.7.6)
- ProGuard对java jar包实现混淆加密
- java之 ------ 类的封装、继承和多态(二)