双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

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

hackerning hackerning 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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呢????????!!!!!!!!!!!
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
hackerning
网络编程 18,356 成员 64,161 内容