C++服务器之IP与域名转换
2017-01-27 08:36
309 查看
程序是使用域名还是直接使用IP
答案很明显,对网络有一定了解的都会知道IP这个是可变的,虽然ISP会维持原有的IP,但是一个程序不能依赖这一点,这将会导致程序的扩展性变低。(如:一个已经开发完成的程序,当仅需要更换IP时,这将导致整个程序的从新编译,而客户端则需要重新下载程序,显而使用域名 DNS来解析则很方便的解决这个问题,而不是整个程序从新编译。)函数:
#include <netdb.h>
struct hostent* gethostbyname(const char* hostname);
成功返回hostent结构体地址,失败返回NULL
hostent 结构体定义:
struct hostent {
char* h_name;
char** h_aliases;
int h_addrtype;
int h_length;
char** h_addr_list;
}
参数说明:
h_name:变量存有官方域名,某一主页。
h_aliases:可以多个域名访问同一个主页,同一个IP可以绑定多个域名。信息都由此获得。
h_addrtype:gethostbyname此函数支持 IPV4 和 IPV6。可以通过此变量获取保存在h_addr_list的IP地址族信息。IPv4 中存有 AF_INET。
h_length:保存IP地址的长度,IPv4 是4字节,所以是4,。IPv6 是16字节,所以是16。
h_addr_list:重要成员。以整数的形式保存域名对应的IP地址。如果用户较多,有可能分配多个IP在同一个域名,服务器的负载均衡。(也可以通过此变量获取IP地址信息。)
Linux/Unix代码清单:
//
// main.cpp
// HostTest
//
// Created by JiangXinBin on 2017/1/27.
// Copyright © 2017年 JiangXinBin. All rights reserved.
//
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>
using namespace std;
void ServerOutMessage(char *str);
int main(int argc, const char * argv[]) {
int i;
struct hostent *host;
host = gethostbyname("www.baidu.com");
if(!host){
ServerOutMessage("gethost...error");
}
ServerOutMessage(host->h_name);
for (i = 0; host->h_aliases[i]; i++) {
cout << "Aliases " << i+1 << ":" << host->h_aliases[i] << "\n" << endl;
}
printf("Address type: %s \n",(host->h_addrtype == AF_INET) ? "AF_INET" : "AF_INET6");
for (i = 0; host->h_addr_list[i]; i++) {
cout << "IP addr " << i+1 << ":" << inet_ntoa(*(struct in_addr*)host->h_addr_list[i]) << "\n" << endl;
}
return 0;
}
void ServerOutMessage(char *str){
cout << "服务器信息:" << str << endl;
}
相关文章推荐
- C++:通过gethostbyname函数,根据服务器的域名,获取服务器IP
- C++通过域名获取服务器IP
- IIS 如何用同一IP解析不同域名到同一服务器
- 网站禁止IP访问,禁止未备案域名访问服务器
- Nginx禁止通过IP,未绑定域名访问服务器
- C++ regex 正则表达式 匹配IP 域名
- 域名,ip相互转换(Linux,getaddrinfo, getnameinfo)
- ip转换为数值 数值转换为ip c++
- 域名,ip相互转换(Linux,getaddrinfo, getnameinfo)
- 没有固定IP,用花生壳的服务器做网站,如何使用自己的域名访问
- 域名,ip相互转换(Linux,getaddrinfo, getnameinfo)
- 一个服务器上面配置多个IP ,实现指定IP的域名请求
- IP转换成域名
- nginx 禁止通过IP,未绑定域名访问服务器
- Megaupload 打不开解决办法(100% ok)域名和ip转换解析网站
- IP 域名转换 IP版本判断
- 通过WINS服务器实现从机器名到IP的转换
- 同一域名对应多个IP时,获取指定IP服务器的远程网页内容
- 配置Windows 2003的IIS:防止别人的域名绑定到自己的服务器IP上
- Nginx禁止通过IP,未绑定域名访问服务器