一个看似容易其实麻烦的难题(网络方面)

hackerning 2001-07-21 11:49:44
QQ里头是怎么先区分局域网和互联网上的IP的?我们所用的GETHOSTBYNAME(0)等都是如果装有网佧就先侦测出网佧分配的IP,如果没有网佧才能识别出上网时的IP,这个问题怎么解决啊,
呵呵,帮忙问问撒:0

当然我门可以用下面的方法:
先用gethostname(0)

gethostbyname返回一个HOSTENT结构指针。
再来看hostent结构的定义:
struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list; //就是这里了
};

Members
h_name
Official name of the host (PC). If using the DNS or similar resolution system, it is the Fully Qualified Domain Name (FQDN) that caused the server to return a reply. If using a local hosts file, it is the first entry after the IP address.
h_aliases
Null-terminated array of alternate names.
h_addrtype
Type of address being returned.
h_length
Length of each address, in bytes.
h_addr_list
Null-terminated list of addresses for the host. Addresses are returned in network byte order. The macro h_addr is defined to be h_addr_list[0] for compatibility with older software.

呵呵,看到这里应该就差不多可以搞掂了。
h_addr_list里面存在有所有本机的IP。把它一一枚举出来就OK了。

但是问题是怎么枚举出来呢,h_addr_list[0],h_addr_list[1],h_addr_list[2]这样吗?我试了,死机,不行。。。。。。。。。。。。。

怎么能够分得清哪些是公网IP,哪些是内网IP呢????????!!!!!!!!!!!
...全文
36 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧