一般网络编程中,大部分公司客户端请求服务端地址一般还是采用域名+访问文件的形式。
比如:www.hehe.com/request.do
但是有些公司某些因素,从测试到线上一直用的ip地址作为了请求地址。
http://212.112.xxx,xx:8080/request.do
使用域名和使用IP其实都是有各自的利弊。
因为我们都知道如果服务器换地址了,那么如果使用了ip作为address的话,本身在客户端写死了请求地址,就需要更新客户端。
使用域名则不会有如上问题。
但是使用域名便利后带来的是一个性能或者是时间上的牺牲。
其实说白了,域名就是起了一个中间者的作用,我们发起一条请求时,域名还是被解析成了ip去请求。
因此可以看出中间多了一步域名解析过程。
于是我们可以考虑下,在代码里动态的把请求地址域名换成ip地址。
简单说,这样既兼顾了两者的优点。
以下是部分根据域名获取ip地址代码
//根据域名获取ip地址 -(NSString*)getIPWithHostName:(const NSString*)hostName { const char *hostN= [hostName UTF8String]; struct hostent* phot; @try { phot = gethostbyname(hostN); } @catch (NSException *exception) { return nil; } struct in_addr ip_addr; memcpy(&ip_addr, phot->h_addr_list[0], 4); char ip[20] = {0}; inet_ntop(AF_INET, &ip_addr, ip, sizeof(ip)); NSString* strIPAddress = [NSString stringWithUTF8String:ip]; return strIPAddress; }
#include <netdb.h>
#include <sys/socket.h>
最后提一点是HostName格式不要带http://.
我本来是带这个完整路径,发现获取的和我们本身服务端的ip地址不一致。
去掉后就行了。