Win2000下调用GetHostByName()函数的奇怪现象(100分)

  • 主题发起人 主题发起人 zhanglei
  • 开始时间 开始时间
Z

zhanglei

Unregistered / Unconfirmed
GUEST, unregistred user!
运行环境:
单机(双网卡,IP地址分别为192.168.1.1、 192.168.2.1, 未连网线),运行Win2000
SERVER(未打service pack补丁)。

问题现象:
在网卡未连网线情况下,调用gethostbyname()API函数获取IP地址列表,得到的仅仅是
127.0.0.1,而同样情况在NT4(SP6)下可以正确获得上述两个IP地址。但当将192.168.1.1
对应的网卡和HUB之间连线后,即获得192.168.1.1; 将192.168.2.1对应网卡连线,即获
得192.168.2.1;当两个网卡都连线时,两个IP地址都可以正确获得。由此联想到Win2000
下运行ipconfig时,没有连网线的网卡对应的IP地址无法显示(NT下则可以)

由于这个问题,我在Win2000单机上运行网络程序时,因为没有连网线找不到IP地址无法
运行(在NT下则没有问题!)。

望各位大侠指点迷津!
 
呵呵, 我的笔记本也这样, 不过是windowsme, 只有网线连通才有ip地址. 不然就是
127.0.0.1
 
可能与Win2000的高级电源管理有关!
把本地连接->常规->配置->电源管理页中的
"允许计算机关闭这个设备以节约电源"的钩去掉试试
 
杜宝:
照你的方法做,还是不行。
 
You must add WsaStartup() before the call to Gethostbyname() and add a WsaCleanup() after the call
Wstartup() start the Winsock Service ! WsaCleanup() Stop the Winsock Service !
This is the way:

if Wsastartup() =0
cServerName:="www.delphibbs.com"
cServerIP :=GetHostByName(cServerName)
WsaCleanup()
else
Some kind of error
endif
 
调用WSAStartup()和WSACleanup()是自然的,但是问题就是在这种情况下出现的
 
Windows 2000,Windows Me的TCP/IP属性增加“检测到网络媒体的连接”选项,默认
选中,如果去掉应该就没问题。
 
请问Win2000中的“检测到网络媒体的连接”选项在哪里?怎么没有找到?
 
1,使用ISA的网卡
2,将WIN2K设置为主域控制器
 
这不是你的问题。
你可以试试ipconfig,结果也是一样的。
 
在网络属性里面, 看他的Internet协议, 左下角
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部