打印本文 打印本文 关闭窗口 关闭窗口
SGIP的delphi原码
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3513  更新时间:2009/4/23 18:39:04  文章录入:mintao  责任编辑:mintao
byte;
    ExpireTime          :array[0..15] of char;
    ScheduleTime        :array[0..15] of char;
    ReportFlag          :byte;
    TP_pid              :byte;
    TP_udhi             :byte;
    MessageCoding       :byte;
    MessageType         :byte;
    MessageLength       :longword;
    MessageContent      :array[0..160] of char;  file://长度为  MessageLength;
    Reserve             :array[0..7] of char;
  end;
  Submit_Resp=Record
    Result              :byte;
    Reserve             :array[0..7] of char;
  end;
  //
  XDeliver=Record
    UserNumber          :array[0..20] of char;
    SPNumber            :array[0..27] of char;
    {TP_pid              :byte;
    TP_udhi             :byte;
    MessageCoding       :byte;
    MessageLength       :longword;}
    MessageContent      :array[0..254] of char;  file://长度为  MessageLength;
    Reserver            :array[0..7] of char;
  end;
  Deliver_Resp=Record
    Result              :byte;
    Reserve             :array[0..7] of char;
  end;

  //
  XReport=Record
    SubSequNumber1,SubSequNumber2,SubSequNumber3        :longword;
    ReportType          :byte;
    UserNumber          :array[0..20] of char;
    State               :byte;
    ErrorCode           :byte;
    Reserve             :array[0..7] of char;
  end;
  Report_Resp=Record
    Result              :byte;
    Reserve             :array[0..7] of char;
  end;

implementation
end.

 


file://、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、//
服务端
unit main;

interface

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

type
 
  TForm1 = class(TForm)
    Memo1: TMemo;
    ServerSocket1: TServerSocket;
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  type
    SendPack = packed record
      head:  SGIPHead;
      resp:  Bind_Resp;
    end;
  var
    ReHead:SGIPHead;
    sresp:Bind_Resp;
    ReBind:xBind;
    ReDeliver:XDeliver;
    ReReport:XReport;
    i1,i2:integer;
    str:string;
    S_Number1,S_Number2,S_Number3,longI1:longword;
    s_Pack:SendPack;
begin
  fillchar(sresp,sizeof(sresp),0);
  fillchar(ReHead,sizeof(ReHead),0);
  i1:=Socket.ReceiveBuf(ReHead,sizeof(ReHead));
  if i1<>sizeof(ReHead) then
  begin
    memo1.Lines.Add(''''Recv message Error exit'''');
    exit;
  end;
  S_Number1:=ReHead.SNumber1;
  S_Number2:=ReHead.SNumber2;
  S_Number3:=ReHead.SNumber3;
  ReHead.MessageLength:=ntohl(ReHead.MessageLength);
  ReHead.CommandId:=ntohl(ReHead.CommandId);
  ReHead.SNumber1:=ntohl(ReHead.SNumber1);
  ReHead.SNumber2:=ntohl(ReHead.SNumber2);
  ReHead.SNumber3:=ntohl(ReHead.SNumber3);
  memo1.Lines.Add(''''read SMG message'''');
  memo1.Lines.Add(inttostr(ReHead.MessageLength));
  memo1.Lines.Add(inttostr(ReHead.CommandId));
  memo1.Lines.Add(inttostr(ReHead.SNumber1));
  memo1.Lines.Add(inttostr(ReHead.SNumber2));
  memo1.Lines.Add(inttostr(ReHead.SNumber3));
  if ReHead.CommandId=SGIP_UNBIND then
  begin            file://断开连接
    FillChar(ReHead,SizeOf(ReHead),0);
    ReHead.MessageLength:=htonl(SizeOf(ReHead));
    ReHead.CommandId:=htonl(SGIP_UNBIND_RESP);
    ReHead.SNumber1:=S_Number1;
    ReHead.SNumber2:=S_Number2;
    ReHead.SNumber3:=S_Number3;
    i1:=socket.SendBuf(ReHead,sizeof(ReHead));
    if i1<>sizeof(ReHead) then
      memo1.Lines.Add(''''Send SGIP_UNBIND_Resp Error'''')
    else
      memo1.Lines.Add(''''Send SGIP_UNBIND_Resp OK'''');
  end
  else if ReHead.CommandId=SGIP_BIND then
  begin           file://SMG向SP发送一条MO短消息
    FillChar(s_Pack,SizeOf(s_Pack),0);
    FillChar(ReBind,SizeOf(ReBind),0);
    socket.ReceiveBuf(ReBind,SizeOf(ReBind));
    s_Pack.head.MessageLength:=htonl(SizeOf(s_Pack));
    s_Pack.head.CommandId:=htonl(SGIP_BIND_RESP);
    s_Pack.head.SNumber1:=S_Number1;
    s_Pack.head.SNumber2:=S_Number2;
    s_Pack.head.SNumber3:=S_Number3;
    s_Pack.resp.Result:=0;
    i1:=socket.SendBuf(s_Pack,SizeOf(s_Pack));
    if i1<>SizeOf(s_Pack) then
      memo1.Lines.Add(''''send SGIP_Bind_Resp Error'''')
    else
      memo1.Lines.Add(''''Send SGIP_bind_Resp'''');
  end
  else if ReHead.CommandId=SGIP_DELIVER then
  begin
    FillChar(s_Pack,SizeOf(s_Pack),0);
    FillChar(ReDeliver,SizeOf(ReDeliver),0);
    Socket.ReceiveBuf(ReDeliver,SizeOf(ReDeliver));
    s_Pack.head.MessageLength:=htonl(SizeOf(s_Pack));
    s_Pack.head.CommandId:=htonl(SGIP_DELIVER_RESP);
    s_Pack.head.SNumber1:=S_Number1;
    s_Pack.head.SNumber2:=S_Number2;
    s_Pack.head.SNumber3:=S_Number3;
    s_Pack.resp.Result:=0;
    if socket.SendBuf(s_Pack,SizeOf(s_Pack)) <>SizeOf(s_Pack) then
      memo1.Lines.Add(''''send SGIP_DELIVER_RESP Error'''')
    else
      memo1.Lines.Add(''''Send SGIP_DELIVER_RESP OK'''');
    memo1.Lines.Add(ReDeliver.UserNumber);
    memo1.Lines.Add(ReDeliver.SPNumber);
    file://longI1:=ntohl(ReDeliver.MessageLength);
    file://memo1.Lines.Add(inttostr(longI1)+''''   ''''+inttostr(ReDeliver.MessageLength));
    memo1.Lines.Add(ReDeliver.MessageContent);
  end
  else  if ReHead.CommandId=SGIP_REPORT then
  begin
    FillChar(s_Pack,SizeOf(s_Pack),0);
    FillChar(ReReport,SizeOf(ReReport),0);
    Socket.ReceiveBuf(ReReport,SizeOf(ReReport));
    s_Pack.head.MessageLength:=htonl(SizeOf(s_Pack));
    s_Pack.head.CommandId:=htonl(SGIP_REPORT_RESP);
    s_Pack.head.SNumber1:=S_Number1;
    s_Pack.head.SNumber2:=S_Number2;
    s_Pack.head.SNumber3:=S_Number3;
    s_Pack.resp.Result:=0;
  

上一页  [1] [2] [3] [4] [5]  下一页

打印本文 打印本文 关闭窗口 关闭窗口