读书人

国内一流IT企业面试题:怎么快速查找指

发布时间: 2013-04-21 21:18:07 作者: rapoo

国内一流IT企业面试题:如何快速查找指定IP在IP地址池中的位置信息
问题描述:
有IP地址池,每一个IP段包括三个信息:开始IP、结束IP、IP所在的物理位置
比如:42.57.158.120 - 42.51.160.255 北京某机房
从客户端获取一个IP地址后,如何才能快速的查找出此IP的物理位置。
有几点要求:
1.不能依赖于数据库
2.需要把IP地址池存入内存中

我想到的解决方案是:
IP地址结构:
typedef struct _ipaddr
{
unsigned long int start_ip;
unsigned long int end_ip;
char position[100];
}ipaddr;
IP地址池存储方式:
首先将IP地址string 类型转换成 unsigned long int, 生成以上的ipaddr结构,然后以start_ip为key,再将结构序列化后存入 hash table。
指定IP查找算法:
将指定IP转换成 unsigned long int current_ip, 然后使用二分查找直接在hash table中进行比较
if start_ip < current_ip then
pull struct
if stop_ip > current_ip then
return position
end if
end if
取下一个点再进行比较。

欢迎大家讨论还有没有其他更好的方法,或者可以改进的地方。

ip地址类型可以确定.

主机号做hash表,网络作定位.
[解决办法]

读书人网 >C语言

热点推荐