远程有一个SQL数据库服务器,正常如果家用电脑都能够连接。而常碰到网络内部是代理服务器上网或其它限制的,导致连接不上,这个问题怎么解决?比如远程SQL服务端的地址是:218.15.82.155 ,则通过 
Provider=SQLOLEDB.1;User ID=sa;Password=;Persist Security Info=True;Initial Catalog=vote;Data Source=218.15.82.155 
可以访问得到这个服务器。而碰到有代理的则会出现访问不了的问题。
而电脑却能够通过 ie 访问这个IP上的网站,也能够上QQ有没有高手指点一下,要如何才能够跳过这个网络的限制,或通过SOCK5的上网代理连接到SQL服务器上。代理服务又要怎么写? 其它:
1、不能用VPN的,那太麻烦。
2、软件是公众化软件,只能想办法在软件中解决,不能让各自的网管去设置代理或防火墙等的
3、软件客户端很多,类似QQ这一类的,所以端口映射这一类的也不现实,不可能每一台客户端都去设置
4、服务器我可以完全控制,1433端口也打开,没有其它什么限制
5、Delphi 实现
哪有高手,请给个能够解决上面问题 Sock5 的例子看看,谢谢!

解决方案 »

  1.   

    因为ADO组件等数据库组件不支持通过代理,所以就没办法
    除非是自己写,但这个需要了解这些组件的原理和相关的协议,建议你放弃你的想法吧
      

  2.   

    没有那么惨吧。直接在软件中写个 Sock5 或 http 代理不行吗?就象QQ里面不是也可以通过设置代理来进行上网的?
    补充一下:
        如果客户端已经在IE中设置了代理服务器的地址,而且IE也可以正常上网,软件中能不能直接读取这个设置,从而不用在软件中另外再去设置代理
      

  3.   

    用三层结构可以很好的解决这个问题,客户端连接到服务端只需要IP和端口,你只要在路由映射这个端口到服务器就OK了。
      

  4.   

    那还要全部改原先的系统,很花时间了。能不能用个 Sock5 的来实现,高手在哪。
      

  5.   

    socket5 代理很难找,都要钱的。HTTP代理比较好找,你可以考虑用HTTP协议。
      

  6.   

    http也行啊,能够解决上面提到的问题就行。楼上的兄弟,给段代码参考一下?
      

  7.   

    在你的代理上设置一下,开个新的代理端口1433,并指定该端口连接到218.15.82.155。
    然后,程序里的SQL Server地址写你的代理服务器地址。
      

  8.   

    这个是你软件架构的问题,像你这种公众型的软件,怎么能直接让他们连接数据库。你自定义协议,做一个C/S结构得出来就好得多了。不过估计你项目要大改一下了。ADO本身是不支持Sock代理一说的。
      

  9.   

    用http吧,80端口一般防火墙不会封的,可以用webservice来通信操作数据库等,delphi下很容易实现
      

  10.   

    to CaiBirdy :
    能给个例子看看吗,我对这一块不熟
      

  11.   

    是的自己弄个IISAPI或者Webservice接口,不然用Remoting也成。