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 + -
显示快捷键?