我想在三层结构中的服务器端得到连接上我这个服务器的客户端IP,请问应怎么做呀?

解决方案 »

  1.   

    去scktsrvr.exe源代码里找,那里面有
      

  2.   

    我知道在Scktsrvr里面可以得到,但我一定要在中间层服务器上得到。而Scktsrvr好像和我们的中间层是分开的。
      

  3.   

    是不是可以这样子,在客户端向服务器发送消息时,打包自己本地的IP信息,发给服务器,然后服务器修改记录。这样服务器就可以知识客户端的IP了
      

  4.   

    你可以把Scktsrvr和中间层集成起来,不就可以了
      

  5.   

    你在服务器程序增加一个type library, 这个可以让客户端来上传一个字符串。原理就是这样的啦。
      

  6.   

    你专们做一个客户端IP表来进行管理,当客户端登陆时,把自己的IP记录在表里面,并设标志进行提示此IP是否在线(0:不在,1:在线),服务器就去找这张表就可以了
      

  7.   

    我是要记录看那一个IP登陆到了我的服务器呀。这样子怎么可以呀?
    还有就是,我们中间层允许有外网的机子连接,如果说有一个局域网共用一个公网IP上网的话,你这种方式就没有用了。因为不同的局域网可以设置相同的局域网IP
      

  8.   

    zdq801104(我很笨,但是我不傻!) 的办法是很比较优化的,应该这样做
      

  9.   

    看来一下SCKTSRVR调用中间层(COM对像),就是APPSERVER部门,里面你加个方法,传递IP地址
      

  10.   

    如果是外网经过路由进来的话,它的计算机IP可能都找不到,只能识别外网服务器IP
      

  11.   

    To  pengzhengling(重新来过) 能不能说的更详细点呢?我认为你这种方法可能可能,说的详细点吧,
    好吧。
      

  12.   

    我来回答你的问题吧。
    (1)不错,采用Borland公司的小工具SCKTSRVR.exe可以解决这个问题,但是这要求你对Delphi非常的了解,也许会给你带来一定的难度。
    (2)你可以在服务器端定义一个方法get_ip(ip:string). 将这个方法输出到remote server中,便于客户端调用。一旦客户端登陆之后,可以采用indy组件获取自己的ip,并且通过get_ip方法,将这个ip返回到服务器。
    祝你好运。
      

  13.   

    大部分的解决的方法只有是在服务器上定义一个方法。服务器记录这些IP。
    让客户端上线后找服务器上自己的IP。
      

  14.   

    (To gongfs) 我要得到的是公网的IP,也就是说我们局域网共用的一个公网IP,而不是客户用的本地IP。因为我们ScktSrvr的列表里记录的是共网IP。