xms77 发表于 2011-10-25 11:17:52

关于宏@IPAddress1的问题

本帖最后由 xms77 于 2011-10-25 11:19 编辑

我用$MC_IP = @IPAddress1来得到本机的IP地址,本身应该没有问题,但是进来发现有时候返回的IP地址竟然是127.0.0.1(网络连接情况没有问题),这可不是我想要的,不知道是怎么回事?有谁知道的说说啊!

zcx880517 发表于 2011-10-25 12:55:53


@IPAddress1   第一个网络适配器的 IP 地址.在某些电脑上可能会返回 127.0.0.1

帮助文档里写了哦。。在某些电脑上可能会返回127.0.0.1

happytc 发表于 2011-10-25 13:55:46

回复 1# xms77

跟踪了下,这个宏是调用gethostname(),然后利用此函数得到的主机名再调用gethostbyname()函数来得到IP地址的。而它们都是个Socket API函数。而用Socket取主机名,在有些情况下(如:机子没有在局域网上,是个单机)就可能取到Localhost,于是就会得到127.0.0.1的ip名了。这个时候,你循环下,用@IPAddress2, @IPAddress3之类的,先取到的,就是你的真实ip了
微软的DevER已经建议用getaddrinfo 函数取代gethostbyname了,这样还能取到IPv6的地址

leon460 发表于 2011-10-25 14:53:19

回复 3# happytc

顶,感谢解释宏相关的内容

qinguofang 发表于 2011-10-25 20:28:38

这个值得学习,正需要呢
页: [1]
查看完整版本: 关于宏@IPAddress1的问题