unitmymodule.~pas

来自「远程抄表系统的客户端程序 安徽六安项目-客户端程序 0 开发环境 Del」· ~PAS 代码 · 共 89 行

~PAS
89
字号
unit UnitMyModule;

interface

uses
  SysUtils, Classes, DB, ADODB, DBXpress, FMTBcd, SqlExpr, IdUDPClient,
  IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, IdStack, IdSocketHandle;

type
  TMyModule = class(TDataModule)
    AdoConn: TADOConnection;
    AdoQuery: TADOQuery;
    UDPClient: TIdUDPClient;
    UDPServer: TIdUDPServer;
    procedure DataModuleCreate(Sender: TObject);
    procedure UDPServerUDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
  private
    { Private declarations }
  public
    { Public declarations }
    function GetLocalIpAddress():string;
  end;

var
  MyModule: TMyModule;

implementation

uses UnitMain, UnitOrder1, UnitOrder3;

{$R *.dfm}

function TMyModule.GetLocalIpAddress():string;
begin
  result := GStack.LocalAddress;
end;

procedure TMyModule.DataModuleCreate(Sender: TObject);
begin
  {
  '本地名字'    MyModule.UDPServer.LocalName
  '本地ip地址'  MyModule.GetLocalIpAddress()
  '监视端口号'  IntToStr(MyModule.UDPServer.DefaultPort)
  '最大缓冲'    IntToStr(MyModule.UDPServer.BufferSize)

  MyModule.UDPClient.Send('111111111');
  }
  UdpClient.Host := FormMain.IniFile.ReadString('Udp', 'ServerIp', '192.168.2.6');
  UdpClient.Port := StrToInt(FormMain.IniFile.ReadString('Udp', 'ServerPort', '1080'));
  UdpClient.BufferSize := 8192;
  UDPClient.Active := true;

  //客户端监视端口 =( 服务器监视端口 + 1 )
  UdpServer.DefaultPort := UdpClient.Port + 1;
  UDPServer.BufferSize  := 8192;
  UDPServer.Active := True;
end;

procedure TMyModule.UDPServerUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  s : String;
begin
  DataStringStream := TStringStream.Create('');
  try
    DataStringStream.CopyFrom(AData, AData.Size);
    //增加到最后
    //FormOrder3.MemoMsg.Lines.Add('IP: ' + ABinding.PeerIP + ' Port: '+ 'Data: ' + IntToStr(ABinding.PeerPort) + '  事 件');
    //s := DataStringStream.DataString;
    //FormOrder3.MemoMsg.Lines.Add(s);
    //插入到开始
    //FormOrder3.MemoMsg.Lines.Insert(0, 'IP: ' + ABinding.PeerIP + ' Port: '+ 'Data: ' + IntToStr(ABinding.PeerPort) + '  事 件');
    s := DataStringStream.DataString;
    FormOrder3.MemoMsg.Lines.Insert(0, s);
    if (FormOrder3.bTimerRefresh = True) and
       (FormOrder3.ListView.Items.Count < FormOrder3.OrderCount ) and
       (FormOrder3.OrderDelay   <= 0 )   then
    begin
      FormOrder3.DataRefresh();
    end;
  finally
    DataStringStream.Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?