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

📄 ismgformunit.~pas

📁 短消息的实现参考
💻 ~PAS
字号:
unit ISMGFormUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp;

type
  TForm1 = class(TForm)
    ISMGServerSocket: TServerSocket;
    procedure FormCreate(Sender: TObject);
    procedure ISMGServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ISMGServerSocket.Open;
end;

procedure TForm1.ISMGServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  sub:CMPP_Submit;
  astr:String;
  msgh:MsgHeader;
  connect:CMPP_Connect;
  connect_resp:CMPP_Connect_RESP;
  sub_resp:CMPP_Submit_RESP;
  deliver:CMPP_Deliver;
  sub_statrep:CMPP_Submit_StatREP;
  deliver_resp:CMPP_Deliver_RESP;
  active_test_resp:CMPP_Active_Test_RESP;
  total_length:Cardinal;
begin
  showmessage('ReceiveLength='+IntToStr(Socket.ReceiveLength));
  astr:=socket.ReceiveText;
//for msgh
  msgh:=RecMsgHeader(Copy(astr,1,12));
  total_length:=msgh.Total_Length;
  case msgh.Command_Id of
    Cmd_Connect:
    begin
      connect:=RecConnect(Copy(astr,13,total_length-12));
      showmessage('CMPP_Connect!');
      showmessage('test='+IntToStr(connect.Timestamp));
    end;
    Cmd_Connect_RESP:
    begin
      connect_resp:=RecConnectRESP(Copy(astr,13,total_length-12));
      showmessage('CMPP_Connect_RESP!');
      showmessage('test='+IntToStr(connect_resp.Version));
    end;
    Cmd_Submit:
    begin
      sub:=RecSubmit(Copy(astr,13,total_length-12));
      showmessage('CMPP_Submit!');
      showmessage('Msg_Content Length='+IntToStr(Length(sub.Msg_Content)));
      showmessage(sub.Msg_Content);
    end;
    Cmd_Submit_RESP:
    begin
      sub_resp:=RecSubmitRESP(Copy(astr,13,total_length-12));
      showmessage('CMPP_Submit_RESP!');
      showmessage('Result='+IntToStr(sub_resp.Result));
    end;
    Cmd_Deliver:
    begin
      deliver:=RecDeliver(Copy(astr,13,total_length-12));
      showmessage('CMPP_Deliver!');
      if deliver.Registered_Delivery<>0 then
      begin
        sub_statrep:=RecSubmitStatREP(deliver.Msg_Content);
        showmessage(sub_statrep.Dest_Terminal_Id);
      end
      else
        showmessage(deliver.Msg_Content);
    end;
    Cmd_Deliver_RESP:
    begin
      deliver_resp:=RecDeliverRESP(Copy(astr,13,total_length-12));
      showmessage('CMPP_Deliver_RESP!');
      showmessage(IntToStr(deliver_resp.Result));
    end;
    Cmd_Active_Test_RESP:
    begin
      active_test_resp:=RecActiveTestRESP(Copy(astr,13,total_length-12));
      showmessage('CMPP_Active_Test_RESP!');
      showmessage(IntToStr(active_test_resp.Reserved));
    end;
    else
      showmessage('Bad Command ID!');
  end;
end;

end.

⌨️ 快捷键说明

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