以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于服务器双IP问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=138128)

--  作者:有点蓝
--  发布时间:2019/7/23 15:31:00
--  
If e.Name = "数据源名称" Then
msgbox(Network.Ping("192.168.1.100",1000)
msgbox(Network.Ping("119.75.217.56",1000)
    If Network.Ping("192.168.1.100",1000) = False  Then \'如果第一个IP无法接通
        e.ConnectionString = e.ConnectionString.Replace("192.168.1.100""119.75.217.56"
    End If

End
 If

这个2个地址都能访问吗?

内网用户和服务器是在同一个网段吗,能ping的通服务器内网IP吗

--  作者:有点蓝
--  发布时间:2019/7/23 16:14:00
--  
这样判断http://www.foxtable.com/webhelp/topics/2709.htm

If TryConnectHost("192.168.1.100") Then
    If 
Network.Ping("192.168.1.100") Then
        
e.ConnectionString = e.ConnectionString.Replace("192.168.1.100""119.75.217.56"
    End If
End If

--  作者:有点蓝
--  发布时间:2019/7/23 16:44:00
--  
怎么判断的?完整代码贴出来
--  作者:hahaman
--  发布时间:2019/7/23 16:45:00
--  
给你一个另外的解决方法。在很多场景下都可以使用。通过域名链接,外网解析到:114.114.114.114,内网路由器强制解析到192.168.1.111(类似本地host)。我感觉还挺方便的。
--  作者:有点蓝
--  发布时间:2019/7/23 17:40:00
--  
If e.Name = "ProductionBOM" Then
    If TryConnectHost("192.168.1.3") = false orelse Network.Ping("192.168.1.3") = false  Then
            e.ConnectionString = e.ConnectionString.Replace("192.168.1.3", "192.168.99.99")
    End If
End If

--  作者:shenyl0211
--  发布时间:2019/7/23 21:17:00
--  
千万不要用Replace。关于这个问题,帮助文档很不贴实际。
IP就两个:内网和外网。
外网容易变化。一是因为网络运营商变IP,二是因为单位换网络运营商而变IP,三是因为设备调试的问题而临时变IP,四是因为变更服务器而变IP。
内网的变化也有可能。一是因为异地的子分公司有服务器,且内网IP地址一样,故必须修改一个IP;二是因为变更服务器而变IP。
以上变更IP的情况我都遇到过了。
由此可知,为了不因此而专门升级管理系统,就必须通过IP地址.txt文件进行管理,该文件的内容就是两个IP,用符号(,;|)分隔。用户修改IP地址.txt文件是很方便的。
实际编程的时候,需要先Ping内网IPa(IP地址.txt文件的第一个IP),因为Ping内网IPa是很快的,而且,内网用户也较多,特别是领导较多。Ping通了,IP就用IPa,否则就Ping外网IPb(IP地址.txt文件的第二个IP),Ping通了,IP就用IPb,Ping不同就是网络有问题。
另外,实际工作中,不仅有数据源的连接问题,还有FTP的设置问题,所以,需要用IPa和IPb变量。