⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmppclient.pas

📁 Delphi写的CMPP短信协议控件
💻 PAS
字号:
unit CMPPClient;

interface

uses
  Windows, Messages, SysUtils, Classes, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient,SMSPUBLIC,SGIPTYPE,CMPPTYPE;

type

  TCMPPClient = class(TIdTCPClient)
  private
    { Private declarations }
    FStream:TMemoryStream;
    FBodyLenght:integer;
    function ReadMsgHeader:TCMPPMsgHeader;
    function Read_Connect:TCMPP_Connect;
    function Read_Connect_Rep:TCMPP_Connect_REP;
    function Read_Deliver:TCMPP_Deliver;
    function Read_Deliver_REP:TCMPP_Deliver_Rep;
    function Read_Query:TCMPP_Query;
    function Read_Query_Rep:TCMPP_QUERY_REP;
    FUNCTION Read_Submit:TCMPP_submit;
    function Read_Submit_Rep:TCMPP_sUBMIT_REP;
    procedure WriteMsgHeader(Header:TCMPPMsgHeader);
    procedure Write_Connect(Msg:TCMPP_Connect);
    procedure Write_Connect_Rep(Msg:TCMPP_Connect_REP);
    procedure Write_Deliver(Msg:TCMPP_Deliver);
    procedure Write_Deliver_REP(Msg:TCMPP_Deliver_Rep);
    procedure Write_Query(Msg:TCMPP_Query);
    procedure Write_Query_Rep(Msg:TCMPP_QUERY_REP);
    procedure Write_Submit(Msg:TCMPP_submit);
    procedure Write_Submit_Rep(Msg:TCMPP_sUBMIT_REP);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('LK-SOFT', [TCMPPClient]);
end;

{ TCMPPClient }

function TCMPPClient.Read_Connect: TCMPP_Connect;
var
    b:TCharArray;
begin
    self.ReadBuffer(b,6);
    b[6]:=#0;
    Result.Source_Addr:=String(b);
    self.ReadBuffer(b,16);
    b[1]:=#0;
    //Result.AuthenticatorSP:=b;
    self.ReadBuffer(Result.Version,1);
    self.ReadBuffer(Result.TimeStamp,2);
    Result.TimeStamp:=Wordswap(Result.TimeStamp);
end;

function TCMPPClient.Read_Connect_Rep: TCMPP_Connect_REP;
var
    b:TCharArray;
begin
    self.ReadBuffer(Result.Status,1);
    self.ReadBuffer(b,16);
    b[16]:=#0;
    Result.AuthenticatorISMG:=string(B);
    self.ReadBuffer(Result.Version,1);
end;

function TCMPPClient.Read_Deliver: TCMPP_Deliver;
var
    b:TCharArray;
begin
    self.ReadBuffer(Result.Msg_Id,8);
    Result.Msg_Id:=intSwap(Result.Msg_Id);
    self.ReadBuffer(b,21);
    b[21]:=#0;
    Result.Destnation_id:=String(b);
    self.ReadBuffer(b,10);
    b[10]:=#0;
    Result.Service_id:=String(b);

    Self.ReadBuffer(Result.TP_pid,1);
    Self.ReadBuffer(Result.TP_udhi,1);
    Self.ReadBuffer(Result.Msg_Fmt,1);
    self.ReadBuffer(b,21);
    b[21]:=#0;
    Result.Src_terminal_id:=string(b);
    self.ReadBuffer(Result.Registered_Deliver,1);
    self.ReadBuffer(Result.Msg_Length,1);
    if Result.Registered_Deliver=0 then
        self.ReadBuffer(Result.Msg_Content,Result.Msg_Length)
    else begin
        self.ReadBuffer(Result.Msg_Report.Msg_id,8);
        result.Msg_Report.Msg_id:=int64swap(result.Msg_Report.Msg_id);
        self.ReadBuffer(b,7);
        b[7]:=#0;
        result.Msg_Report.Submit_Time:=string(b);
        self.ReadBuffer(b,10);
        b[10]:=#0;
        Result.Msg_Report.Done_Time:=string(b);
        self.ReadBuffer(Result.Msg_Report.SMSC_Sequence,4);
        Result.Msg_Report.SMSC_Sequence:=intswap(Result.Msg_Report.SMSC_Sequence);
    end;
    self.RemoveXBytesFromBuffer(8);
end;

function TCMPPClient.Read_Deliver_REP: TCMPP_Deliver_Rep;
var
    b:TCharArray;
begin
    self.ReadBuffer(result.Msg_id,8);
    Result.Msg_id:=int64swap(Result.Msg_id);
    self.ReadBuffer(result.Result,1);
end;

function TCMPPClient.Read_Query: TCMPP_Query;
begin

end;

function TCMPPClient.Read_Query_Rep: TCMPP_QUERY_REP;
begin

end;

function TCMPPClient.Read_Submit: TCMPP_submit;

begin

end;

function TCMPPClient.Read_Submit_Rep: TCMPP_sUBMIT_REP;
begin

end;

function TCMPPClient.ReadMsgHeader: TCMPPMsgHeader;
begin
    Result.Total_Length:=intSwap(self.ReadCardinal(True));
    Result.Command_ID:=intSwap(self.ReadCardinal(True));
    Result.Sequence_ID:=intSwap(self.ReadCardinal(True));
end;


procedure TCMPPClient.Write_Connect(Msg: TCMPP_Connect);
begin

end;

procedure TCMPPClient.Write_Connect_Rep(Msg: TCMPP_Connect_REP);
begin

end;

procedure TCMPPClient.Write_Deliver(Msg: TCMPP_Deliver);
begin

end;

procedure TCMPPClient.Write_Deliver_REP(Msg: TCMPP_Deliver_Rep);
begin

end;

procedure TCMPPClient.Write_Query(Msg: TCMPP_Query);
begin

end;

procedure TCMPPClient.Write_Query_Rep(Msg: TCMPP_QUERY_REP);
begin

end;

procedure TCMPPClient.Write_Submit(Msg: TCMPP_submit);
begin

end;

procedure TCMPPClient.Write_Submit_Rep(Msg: TCMPP_sUBMIT_REP);
begin

end;

procedure TCMPPClient.WriteMsgHeader(Header: TCMPPMsgHeader);
begin

end;

constructor TCMPPClient.Create(AOwner: TComponent);
begin
  inherited;

end;

destructor TCMPPClient.Destroy;
begin

  inherited;
end;

end.

⌨️ 快捷键说明

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