已知:接口服务器为双网卡,一个IP接因特网(ip1),端口可开放,另一个IP接局域网(ip2);
     局域网中已有一台msSQL数据服务器(ip3),端口可开放;
     因特网机子保证可ping ip1求:因特网机子(多台)通过一服务器取局域网中一msSQL数据的方法,有案例最好,源码为佳,方法也行
3Q!

解决方案 »

  1.   

    我的意识是:因特网的机子向接口服务器发读取xx编号数据的指令,接口服务器接收到后,把sql的数据读出转发给因特网的机子.
      

  2.   

    最簡單的, 直接在路由,或你的服务器主設置端口映射, 直接將 一台msSQL数据服务器(ip3) 對應SQLSERVER的端口映射到 ip1 上!! 具體可用些route軟件, windows 2000自帶也有
      

  3.   

    感谢aiirii(ari-爱的眼睛):用路由或端口映射势必把msSQL数据服务器暴露在因特网上,不安全的.
      

  4.   

    就是楼上ocean617(海洋)说的意思,做个中转服务,再做一个客户端
      

  5.   

    VPN与端口影射都存在安全问题.我还是想用楼上ocean617(海洋)说的意思,做个中转服务,再做一个客户端
      

  6.   

    使用D6的Nmudp组件应该可以?
    比如:因特网一台机子IP为:202.101.22.1;服务器的IP为:218.14.100.1;SQL服务器(局域网的机子)IP为:192.168.1.100。
    {-------------------------因特网一台机子-------------------------------}
    procedure TForm1.Button6Click(Sender: TObject);
    var
      Ctrlcode:array[0..1024]of char;
      str:string;
    begin
      str:='read';//也可以获得本机的IP202.101.22.1 一起发送给服务器:((
      strpcopy(ctrlcode,str);
      nmudp1.Remotehost:='218.14.100.1'
      nmudp1.Sendbuffer(CtrlCode,1024);
    end;
    {---------------------------------End----------------------------------}{--------------------------------服务器--------------------------------}
    procedure TForm1.NMUDP2DataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      Ctrlcode:array[0..1024] of char;
      str:string;
    begin
      Nmudp2.readbuffer(Ctrlcode,NumberBytes);
      if Ctrlcode[0]+Ctrlcode[1]+Ctrlcode[2]+Ctrlcode[3]='read' then
      button1.click;//向SQL服务器发送一个指令~~~~
    end;procedure TForm1.ButtonClick(Sender: TObject);
    var
      Ctrlcode:array[0..1024]of char;
      str:string;
    begin
      str:='send';
      strpcopy(ctrlcode,str);
      nmudp1.Remotehost:='192.168.1.100';
      nmudp1.Sendbuffer(CtrlCode,1024);
    end;
    {---------------------------------End----------------------------------}{-------------------------------SQL服务器------------------------------}
    procedure TForm1.NMUDP2DataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      Ctrlcode:array[0..1024] of char;
      str:string;
    begin
      Nmudp1.readbuffer(Ctrlcode,NumberBytes);
      if Ctrlcode[0]+Ctrlcode[1]+Ctrlcode[2]+Ctrlcode[3]='send' then
      button1.click;//向因特网主机发送数据~~~~
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      Ctrlcode:array[0..2048]of char;
      str:string;
    begin
      str:='send';
      strpcopy(ctrlcode,str);
      nmudp1.Remotehost:='202.101.22.1';
      nmudp1.Sendbuffer(CtrlCode,1024);
    end;
    {---------------------------------End----------------------------------}
      

  7.   

    一个非常菜菜菜的例子:http://bbs.2ccc.com/topic.asp?topicid=134074
      

  8.   

    谢谢wealsh(工作狂人) 的帮助!
      

  9.   

    我觉得还是用TserverSocket和TClienSocket来得好,客户端向服务端发一个字串,服务收到后分割字串,根据要求去取ado连接的SQL数据,并按一定格式传给客户端,由客户端处理数据.
      

  10.   

    http://adayuer.mblogger.cn/posts/12456.aspx
      

  11.   

    VNN的这东东是不是太不安全了,比VPN还不好用呀!