加上防火墙以后是不是局域网中的也不能运行了?
你做的三层结构用什么方式连接的,用DCOM还是Croba还是WinSock?我想你多半用DCOM,DCOM低层用RPC,估计RPC透不过防火墙,加上地址转换,RPC估计无法完成的。
我还有一个弄不明白的,你的数据库服务器开了防火墙,在其它计算机上面能够连接吗?你试试看能不能连接上?

解决方案 »

  1.   

    使用的是DCOM,
    本地局域网都在防火墙以内的,数据库服务器也是这样,里面的机器当然可以连接了。同一套系统,局域网测试没有问题,放在WAN上就不能用了。DCOMConnection的ComputerName应该怎么设置?
      

  2.   

    RPC无法通过互联网进行的,必须使用Winsock连接,修改你的客户端代码,把DCOMConnection换成SocketConnection,在服务器端运行一个程序,在delphi的Bin目录下,名字是scktsrvr.exe,当然前提是你的这个服务器在互联网上是拥有固定的iP的,设置你的SocketConnection的address属性为这个服务器的IP地址,这样就可以连接了,但是这个连接默认的端口是211,需要设置防火墙开放这个端口。
      

  3.   

    使用Socket很简单,但是有些特性不太好啊,感觉上似乎不太稳定(不知道是不是这样),速度有点慢(是不是?),我的测试结果:局域网环境下差不多,在Internet上socket方式速度可以令人满意,我用的是ADSL
      

  4.   

    要安装授权或者采用Http连接进行通讯
      

  5.   

    信已经发出去了,如果Rpc不能穿透防火墙的话,那就改为SocketConnection
    吧!!
      

  6.   

    RPC在互联网上是绑定在TCP协议上面的或者采用UDP进行的,它不可能使用局域网中的网络协议来进行通讯的,实际上,你不如直接使用SocketConnection,效率是差不多的。如果你对稳定性很看重的话,我建议你做一个B/S结构,在服务器上面做一个HTTP的服务,这个服务作为三层数据库应用的客户端,你当然也可以直接的连接数据库,绕过你的中间层,不过这样你重复的工作有很多了,没有必要。外界客户端通过HTTP协议来访问你的应用决度可靠,稳定性是一流的。实际上,因为你的中间层是一个Com,你在ASP文件或者CGI程序中可以直接使用,非常方便直接引用,你要做的只是从新作一个浏览器版本的客户端。