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;

  • 相关阅读:
    用BAT执行python文件
    python写MD5翻译器
    python操作数据库
    百度哪些事
    Python基础教程笔记——使用字符串
    python操作webservices
    Export to Microsoft Excel On a Dynamics AX Form With Multiple Data Sources【转】
    ログインユーザーの権限をJavaScriptでチェックする
    使用JSOM检查文件或文件夹是否存在
    在SharePoint 2013 Wiki Page中使用用户选择对话框
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940928.html
Copyright © 2011-2022 走看看