zoukankan      html  css  js  c++  java
  • datasnap 2010 DataSnap服务器如何得到客户端的IP和端口

    作为一个服务器软件,必须做到对客户端强有力的控制,想要控制,就必须得到客户端的网络基本信息,比如客户端IP和端口。有了客户端IP就能随心所欲操控客户端,比如终止某些客户端的连接、限制功能等等。

    在delphi2010中的datasnap服务器如何获得客户端ip,的确花了我点时间,奇怪为什么这个功能不做的更人性化点呢,功能总是藏着掖着。还得让程序员像寻宝一样摸索,浪费时间。现在把我整理的结果奉献给大家,免得大家在花时间研究这个。

    另外,通过研究发现,DSConnectEventObject.ChannelInfo.Id 属性实际上是内存地址,并不是一个简单的数字。

    以下代码红色部分是关键。

    uses IdTCPConnection;

    ......

    procedure TServerContainer1.DSServer1Connect
      (DSConnectEventObject: TDSConnectEventObject);
    var
      ClientConnection: TIdTCPConnection;
    begin
      with Form1 do
      begin
        dsShowDataSet.Append;
        dsShowDataSet['ClientConnectTime'] := Now;

        if DSConnectEventObject.ChannelInfo <> nil then
        begin
          ClientConnection := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id);

          dsShowDataSet['ClientID'] := DSConnectEventObject.ChannelInfo.Id;
          dsShowDataSet['ClientIP'] := ClientConnection.Socket.Binding.PeerIP +
            ':' + IntToStr(ClientConnection.Socket.Binding.PeerPort);
          dsShowDataSet['ServerIP'] := ClientConnection.Socket.Binding.IP + ':' +
            IntToStr(ClientConnection.Socket.Binding.Port);

        end;

        dsShowDataSet['ClientUserName'] := DSConnectEventObject.ConnectProperties
          [TDBXPropertyNames.UserName];
        dsShowDataSet['ClientUserPassword'] :=
          DSConnectEventObject.ConnectProperties[TDBXPropertyNames.Password];
        dsShowDataSet['ServerInfo'] := DSConnectEventObject.ConnectProperties
          [TDBXPropertyNames.ServerConnection];
        dsShowDataSet.Post;
      end;
    end;

  • 相关阅读:
    整数
    mysql-5.7.13-win32 安装
    Flex air修改外部xml文件 (转)
    JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
    C#中&和&&的区别
    百度UEditor1.4.3编辑器和asp.net MVC 5结合
    ASP.NET MVC ajax数组,模型绑定问题。
    MEF依赖注入无法在在构造函数中使用的解决办法
    AJaxFileUpload 文件上传<pre>,json字符串为空解决方法
    C#中字符串转换为IPAdress
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940928.html
Copyright © 2011-2022 走看看