急,在线等,高分求解Winsock的LocalIP属性问题

lgxysl 2004-05-05 09:28:32
急,高分求解Winsock的LocalIP属性问题。在线等,问题一解决100分立即送上。
我在一个程序中要用到Winsock控件的LocalIP属性,但出现如下问题:
如果在“控制面板”的“网络”设置的“TCP/IP”属性中禁用“DNS”,那么LocalIP属性返回的本机IP地址是正常的,但这时不能正常地上宽带网;如果在“TCP/IP”属性中启用“DNS”,那么上宽带网正常,但用insock控件的LocalIP属性返回的本机IP地址就不正常了,我的计算机的IP是“192.168.1.3”,但LocalIP属性返回的却是“0.0.0.192”。这到底是怎么回事,怎样才能既可以启用DNS,又能使LocalIP属性返回正确的IP地址?
我在线等着,一解决立却给分。
...全文
508 19 点赞 打赏 收藏 举报
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lgxysl 2004-05-11
参考http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=161784可以获得正确的IP地址,但这是用API来完成的,直接用winsock.localip却不能获得正确的IP地址,如何才能使winsock.localip也返回正确的IP地址?
  • 打赏
  • 举报
回复
pigpag 2004-05-11
个人认为:也许是Winsock在特定情况下的BUG。因为0.0.0.192根本不是有效的IP,看上去感觉是CopyMemory的时候出问题了 :)
  • 打赏
  • 举报
回复
pigpag 2004-05-10
如果winipcfg返回正确

参考:http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=161784
  • 打赏
  • 举报
回复
pigpag 2004-05-10
winipcfg显示的IP地址总是正常的吗?
  • 打赏
  • 举报
回复
lgxysl 2004-05-10
没有人能解答这个问题,叫我如何给分?
可是不结贴给分,又要扣我的信誉分,如何是好?
  • 打赏
  • 举报
回复
lgxysl 2004-05-09
没有人知道吗?
  • 打赏
  • 举报
回复
lgxysl 2004-05-07
是的,我的系统有毛病,就是上面我所说的毛病,怎样医?
  • 打赏
  • 举报
回复
flyingZFX 2004-05-07
晕倒~~~~!!!
什么破问题呀?
没有遇到过,
你系统有毛病吧
  • 打赏
  • 举报
回复
yinweihong 2004-05-06
楼主你可能混淆了

再说我也可能会混淆
DNS (Domain Name System)
启用的话,就不能分配静态IP了(好象是单选的)

拨号上网,启用dns,即:自动获取动态ip


差不多就这样了,嘿嘿
  • 打赏
  • 举报
回复
lgxysl 2004-05-06
yinweihong:
我不认同你的说法。
例如在我的局域网中,服务器IP地址设为:192.168.0.1(子网掩码255.255.255.0),各台客户机的IP设为192.168.0.2--192.168.0.40(子网掩码均为255.255.255.0),整个局域网用的都是静态IP地址。
DNS是域名解释服务,通过设置DNS可以把www.csnd.com等域名解释成IP地址。DNS并不分配IP地址。在我的局域网中,服务器运行在windows2000 server操作系统下,并开通了IIS服务,有自己的多个主页,每个主页都有类似于www.csnd.com的域名。在客户机上,必须启用DNS,才能通过域名访问服务器上的网页,如果禁用DNS,则不能通过域名访问服务器上的网页,只能直接通过IP地址来访问。
现在的问题出在:我要开发一个“网络管理系统”来管理这个局域网,这个程序要把各个客户机的IP地址发送给服务器,才能服务器来管理客户机。如果禁用DNS,那么这个“网络管理系统”运行正常,但客户机就不能通过域名来访问服务器的网页了。如果启用了DNS,那么这个“网络管理系统”就不正常了,所有客户机发给服务器的IP地址都是错误的“0.0.0.192”。我是通过winsock.localip来获取各客户机的IP地址的,通过调试发现winsock.localip返回的值都是错误的“0.0.0.192”。就这样,要么我的网络管理系统不正常,要么不能通过域名访问网页,二者不能兼容。
如何解决这个问题呢?
  • 打赏
  • 举报
回复
monica8361 2004-05-06
昨天通宵研究FTP协议,在对话中有一步要绑定本地IP和服务器IP,我就纳闷怎么实现,很早就知道用了宽带的电脑,用localip都只能得到宽带提供的一个静态IP,用小猫上网的电脑,因为不存在网卡也不用通过服务器登陆,所以只有两个IP,127.0.0.1和一个网上的动态IP,这时再用localip就能得到

PASV 获得服务器IP和端口

PORT ftp服务器IP + 高低位端口 返回一组信息,其中包含你本机的外网IP

最后用instr 分离出 本机动态IP即可

如果经常需要获取本机外网IP的朋友,无须找什么组件,利用自己的FTP空间即可实现,只要求一个winsock.ocx(反正你要localip也要winsock,这个要求不过份吧^_^)

没有ftp空间的朋友,我可以提供一个客户端给你,直接提取IP到一个字符串,并封装成一个模块供你们调用

  • 打赏
  • 举报
回复
XmagicX 2004-05-06
我的系统XP当服务器时自动获取IP,自动获得DNS(SYGATE共享)一切正常
做客护端时设置IP和网关与DNS也正常啊
  • 打赏
  • 举报
回复
lgxysl 2004-05-05
补充:这个问题主要出在IP设为静态时且启用DNS时。
  • 打赏
  • 举报
回复
lgxysl 2004-05-05
其实对于这个问题,其实可以这样解决:只要把计算机的IP设为动态IP,禁用DNS,就既可上网,也可获得正确的IP地址。但我现在要想知道是的有什么办法既启用DNS,又可以获得正确的IP地址,而且也想知道,为什么启用DNS会影响winsock.localip返回的值。
  • 打赏
  • 举报
回复
yinweihong 2004-05-05
1.用Router,路由模式,不用服务器,我的环境是阿尔卡特交换机,机器xp,2000没问题哦
2.没98环境
呵呵
  • 打赏
  • 举报
回复
lgxysl 2004-05-05
我在下面的两组系统中测试,结果一样:
1、局域网(不接入宽带网),服务器运行window 2000 server,服务器网卡IP:192.168.0.1。客户机系统为win98,静态IP:192.168.0.3。在客户端,如果不启用DNS,正常。如果启用DNS(主机:192.168.0.1,DNS搜索顺序:192.168.0.1,这样就不正常了,用winsock.localip返回本机IP为"0.0.0.192”。
2、客户机系统为win98,无服务器,通过宽带网路由器接入宽带网,路由器IP为“192.168.1.1”,客户机如禁用DNS,winsock.localip返回值是正确的本机IP地址,但不能上网。如果启用DNS(主机:192.168.1.1,DNS搜索顺序:192.168.1.1),上网正常,但winsock.localip返回值就不正常了,为“0.0.0.192”。
  • 打赏
  • 举报
回复
yinweihong 2004-05-05
楼主什么系统?
xp没出现这个问题哦
msgbox winsock1.localip 为192.16.1.5
正常上电信的ADSL啊
  • 打赏
  • 举报
回复
lgxysl 2004-05-05
我的系统是win98。我刚才在windows2000 server试过,现象也是如此。
  • 打赏
  • 举报
回复
online 2004-05-05
winxp下
没有禁用“DNS”这项,默认的是使用dns
我也是使用宽带上网,winsock.localip可以得到我的ip地址192.168.0.1

你的os是win2000???
  • 打赏
  • 举报
回复
相关推荐
发帖
网络编程
加入

1484

社区成员

VB 网络编程
申请成为版主
帖子事件
创建了帖子
2004-05-05 09:28
社区公告
暂无公告