网络问题!!!!(求救!!!!)

hackerning 2001-07-21 12:31:49
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呢????????!!!!!!!!!!!
...全文
101 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz_0618 2001-07-21
  • 打赏
  • 举报
回复
char * p;
p=*h_addr_list;
CString strTmp(p);

while (strTmp!="")
{
::AfxMessageBox(strTmp);
p+=strTmp.GetLength()+1;
strTmp.Format("%s",p);
}

18,356

社区成员

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

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