我做了一个Dll,仅仅是一个登陆的界面,该界面在打开后需要知道服务器的地址,
就是说你打开的是http://www.home.com/login.dll,要求该dll打开后,界面上有一个标题,显示的服务器是http://www.home.com或者是该服务器的IP地址.我的login.dll是用Intraweb做的.现在我设计Login.dll的时候在里面写什么才能够在login.dll上显示服务器的地址呢?
在线等待 50 分

解决方案 »

  1.   

    就是抓本机的IP, 到Delphi Win32 SDK/API或者基础中找找
      

  2.   

    呵呵!读本机的IP然后在页面上显示呀^_^
    //获取本机IP地址
    //InternetIP=TRUE 则为上网的Internet IP
    Function GetLocalIp(InternetIP:boolean):String;
      type
        TaPInAddr = Array[0..10] of PInAddr;
        PaPInAddr = ^TaPInAddr;
      var
        phe: PHostEnt;
        pptr: PaPInAddr;
        Buffer: Array[0..63] of Char;
        I: Integer;
        GInitData: TWSAData;
        IP: String;
    begin
         try
          WSAStartup($101, GInitData);
          IP:='0.0.0.0';
          GetHostName(Buffer, SizeOf(Buffer));
          phe := GetHostByName(buffer);
          if phe = nil then
          begin
            ShowMessage(IP);
            Result:=IP;
            Exit;
          end;
          pPtr := PaPInAddr(phe^.h_addr_list);
          if InternetIP then
            begin
              I := 0;
              while pPtr^[I] <> nil do
                begin
                  IP := inet_ntoa(pptr^[I]^);
                  Inc(I);
                end;
            end
          else
            IP := inet_ntoa(pptr^[0]^);
          WSACleanup;
          Result:=IP;//如果上网则为上网ip否则是网卡ip
        finally    end;
    end;
      

  3.   

    忘记说了,那段代码是以前我从DelphiBBS上贴下来的,作者是:zhanggm
      

  4.   

    我要的不是本机的IP,本机IP是非常简单就可以获得的,我甚至直接用IntraWeb的WebApplication.IP就可以获得本机的IP地址了。
    我要获得的是服务器的IP地址。因为Dll是放在了服务器。但是用户访问dll的时候,会显示返回的网页在用户的本机上。
    一个登录页面,用户输入用户名称和密码,然后按确定按钮,我使用的是IntraWeb来做的。因此我需要在确定按钮按下的时候向服务器发送一个消息。告诉服务器当前有用户请求登录。但是我不知道消息发到哪里。
    按理说,你从www.home.com上访问的dll,应当发到www.home.com中。但是,我的dll是一个商业软件,该软件不知道将安装在哪个地址上。因此我的程序中不能将按钮的消息发送给www.home.com,必须在用户访问dll的时候来确定该dll的服务器地址到底在哪里。
      

  5.   

    对呀!给你的代码就是返回你的Dll运行的机器的IP呀,ISAPI的运行机理就是和CGI一样的呀!不同的是它不会对每个用户开辟进程,减少服务器的负担
      

  6.   

    有点糊涂. Intraweb写的是web程序,以dll方式放在IIS上发布(服务器).(Intraweb程序就在服务器上, 你要的服务器IP, 不就是程序运行的这台机器的IP, 不就是本机IP).
    客户端通过URL访问, 是不放Intraweb程序的. Webapplication.ip就是客户端的IP.
      

  7.   

    是的!是的!正如xiao78所说^_^
      

  8.   

    我第一次用Delphi写Web,而且以前我最讨厌写网页。不过现在看到Delphi能够写一些好玩的网页,而且公司逼着要做这个方面的东西,因此没办法,自己瞎琢磨怎么写。
    我要写的实际是一个远程监控的东西。首先写一个网页,然后在网页上放一个INDY的TCPCLIENT和TCPSERVER控件。这样在用户打开网页的时候首先获得服务器的地址,然后通过TCPCLIENT控件发送给服务器本地的IP地址。服务器接受到IP地址后存储到数据库中。
    服务器有一个报警监控的服务,在接受到报警信息后,从数据库中获得当前监控的计算机列表中的计算机,将报警信息按照TCP/IP包的模式发给远程监控的计算机。这样,我就不用使用TIMER等东西每各几秒去服务器那里的数据库请求新报警信息了。使用TCPIP直接发送我已经试验成功了,而且是通过网页实现的,感觉速度非常快,因此自我感觉良好。
    因为不是做关于数据库的东西,因此我也懒得去管什么ORB,也不管什么远程的TABLE什么的,反正我现在数据量也不大,干脆自己麻烦点将所有数据都通过TCPIP来进行发送接受。这样从另外一个方面也将数据库和外部的网隔离了。
    因此自己的程序才这么麻烦。不过第一次写这种网页,感觉挺不错的,毕竟是属于远程监控类的。不过现在是做报警信息的监控,回头如果老板一开心要做视频的监控,我肯定死菜。
    我试试上面的程序先。
    总之,先谢谢各位。
    我做一般的DELPHI程序还凑合,毕竟做DELPHI是从2开始的,不过从2开始也有不好的地方,就是新东西不愿意去学。可怜。正象我在学校中由电子转软件时老师说的,做软件,太累,你要时刻学新东西,否则就会被淘汰。深有感受。
      

  9.   

    呵呵!我和你的情况差不多!我用的最熟的是Delphi3和5,最近要做一个东西要去学ASP,头痛的要死。所以干脆去学IntraWeb,不过我担心IntraWeb的升级问题,怕再来个大换血,我又得重学^_^
      

  10.   

    PInAddr 没有定义呀?少什么?