打印本文 打印本文 关闭窗口 关闭窗口
SGIP的delphi原码
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3513  更新时间:2009/4/23 18:39:04  文章录入:mintao  责任编辑:mintao
bsp;        ''''+inttostr(ntohl(cHead.SNumber3)));
    memo1.Lines.Add(''''cBind.LonginType         ''''+inttostr(cBind_resp.Result));
    stream1.Free;
end;

procedure TForm1.Button4Click(Sender: TObject);
file://type
  {abc=packed record
    head:SGIPHead;
    submit:xSubmit;
  end;}
var
  FV_Date1_S,FV_Date2_S:string;
  i,SendSize:integer;
  file://xxx:abc;
  stream2:twinsocketstream;
  abc,bc:longword;
  line1,line2:longword;
begin
  stream2:=twinsocketstream.Create(clientsocket1.Socket,5000);
  SendSize:=0;
  memo1.Lines.Add(''''-------------------------submit--------------------------'''');
  if not ClientSocket1.Active then
  begin
    memo1.Lines.Add(''''-------------------客户端没有打开,submit失败-------------'''');
    exit;
  end;
  DateTimeToString(FV_Date1_S,''''mmddhhnnss'''',now);
  DateTimeToString(FV_Date2_S,''''zzz'''',now);
  FillChar(sSubmit,sizeof(sSubmit),0);
  FillChar(sHead,sizeof(sHead),0);
  with ssubmit do
  begin
    strpcopy(SPNumber,''''4488'''');//;
    ChargeNumber        :=''''8613188890924'''';
    UserCount           :=1;               file://1-100
    {for i:=1 to UserCount do
    begin
      file://strpcopy(UserNumber[i-1].TelN,''''8613065073355'''');//+T_Tel);//          :array of TelCount;  file://长度为UserCount
      UserNumber[i-1].TelN:=''''8613011725853'''';
    end;}
    UserNumber:=''''8613188890924'''';
    CorpID:=''''41027'''';//CorpID:=''''4488'''';//strpcopy(CorpID,FV_corpID);
    ServiceType:=''''4488'''';//FV_SPNumber);//''''4488'''';
    FeeType             :=1;
    FeeValue            :=''''0'''';
    GivenValue          :=''''0'''';
    AgentFlag           :=0;
    MOrelatetoMTFlag    :=2;
    Priority            :=0;
    ExpireTime          :='''''''';
    ScheduleTime        :='''''''';
    ReportFlag          :=1;
    TP_pid              :=0;
    tp_udhi             :=0;
    MessageCoding       :=15;
    MessageType         :=0;
    MessageLength       :=htonl(161);
    strpcopy(MessageContent,T_msg);  file://长度为  MessageLength;
    file://Reserve             :='''''''';
  end;
  {line1:=sizeof(sHead);
  line2:=sizeof(sSubmit);}
  with sHead do
  begin
    abc:=htonl(FV_SNumber);
    MessageLength:=htonl(sizeof(sHead)+sizeof(sSubmit)-3);
    CommandId:=htonl(SGIP_Submit);
    SNumber1:=abc;
    SNumber2:=htonl(StrToInt(FV_Date1_S));
    SNumber3:=htonl(StrToInt(FV_Date2_S));
  end;
  line1:=stream2.Write(shead,sizeof(shead));
  line2:=stream2.Write(sSubmit,sizeof(sSubmit)-3);
  if stream2.WaitForData(5000) then
  begin
    fillchar(cHead,sizeof(cHead),0);
    fillchar(cSubmit_Resp,sizeof(cSubmit_Resp),0);
    memo1.Lines.Add(''''read submit Head ..............'''');
    try
      stream2.ReadBuffer(cHead,sizeof(cHead));
      stream2.ReadBuffer(cSubmit_Resp,sizeof(cSubmit_Resp));
    except
      on e:exception do
      memo1.Lines.Add(e.Message);
    end;
    memo1.Lines.Add(''''read submit csubmit_resp ..............'''');
    file://stream2.ReadBuffer(cBind_Resp,sizeof(cBind_resp));
  end;
  stream2.Free;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
  commandI,PackSize:Longword;
  Recv1I,Recv2I:integer;
begin
  FillChar(sHead,sizeof(sHead),0);
  FillChar(sBind,sizeof(sBind),0);
  Recv1I:=socket.ReceiveBuf(sHead,sizeof(sHead));
  commandI:=ntohl(sHead.CommandId);
  PackSize:=ntohl(sHead.MessageLength);
  if commandI=SGIP_UNBIND_RESP then
  begin
    memo1.Lines.Add(''''------------------接收到SGIP_UNBIND_RESP请求------------------'''');
    exit;
  end;
  Recv2I:=socket.ReceiveBuf(sBind,sizeof(sBind));
  if commandI=SGIP_BIND_RESP then
    memo1.Lines.Add(''''---------------------SGIP_BIND_RESP------------------'''')
  else
  if commandI=SGIP_SUBMIT_RESP then
    memo1.Lines.Add(''''---------------------SGIP_SUBMIT_RESP----------------'''')
  else
    memo1.Lines.Add(''''---------------------''''+inttostr(commandI)+''''------------------'''');
  memo1.Lines.Add(''''MessageLength        ''''+inttostr(ntohl(sHead.MessageLength)));
  memo1.Lines.Add(''''CommandId            ''''+inttostr(commandI));
  memo1.Lines.Add(''''SNumber              ''''+inttostr(ntohl(sHead.SNumber1))+'''' ''''+
        inttostr(ntohl(sHead.SNumber2))+'''' ''''+inttostr(ntohl(sHead.SNumber3)));
  memo1.Lines.Add(''''Result               ''''+inttostr(sBind_Resp.Result));
  memo1.Lines.add(''''------------------end SGIP_UNBIND_RESP-------------------'''');
end;

procedure TForm1.Button7Click(Sender: TObject);
var
  FV_Date1_S,FV_Date2_S:string;
  stream3:TWinSocketStream;
begin
  Stream3:=TWinSocketStream.Create(clientSocket1.Socket,5000);
  memo1.Lines.Add(''''-------------------向服务端发送UnBIND请求--------------------'''');
  if not ClientSocket1.Active then
  begin
    memo1.Lines.Add(''''客户端没有打开'''');
    stream3.free;
    exit;
  end;
  DateTimeToString(FV_Date1_S,''''mmddhhnnss'''',now);
  DateTimeToString(FV_Date2_S,''''zzz'''',now);
  FillChar(sHead,sizeof(sHead),0);
  sHead.MessageLength:=htonl(sizeof(sHead));
  sHead.CommandId:=htonl(SGIP_UNBIND);
  sHead.SNumber1:=htonl(FV_SNumber);
  sHead.SNumber2:=htonl(StrToInt(FV_Date1_S));
  sHead.SNumber3:=htonl(StrToInt(FV_Date2_S));
  stream3.Write(sHead,20);
  FillChar(sHead,20,0);
  if stream3.WaitForData(5000) then
  begin
    stream3.ReadBuffer(sHead,20);
  end;
  stream3.Free;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
    RecvSize1,RecvSize2,DeSize:integer;
    commandI,MessageSize:LongWord;
begin
  RecvSize1:=0;
  RecvSize2:=0;
  FillChar(cHead,SizeOf(cHead),0);

  RecvSize1:=socket.ReceiveBuf(cHead,SizeOf(cHead));
  commandI:=ntohl(cHead.CommandId);
  MessageSize:=ntohl(cHead.MessageLength);
  if commandI=SGIP_BIND then
  begin
    memo1.Lines.Add(''''*********************接收到Bind请求*********************'''');
    FillChar(cBind,SizeOf(cBind),0);
    FillChar(cBind_Resp,SizeOf(cBind_Resp),0);
    RecvSize2:=Socket.ReceiveBuf(cBind,MessageSize-RecvSize1);
    if (RecvSize2+RecvSize1)<>MessageSize then
    begin
      memo1.Lines.Add(''''**********************bind数据接收错误*******************'''');
      exit;
    end;
    RecvSize2:=0;RecvSize1:=0;
    cHead.CommandId:=htonl(SGIP_BIND_RESP);
    cHead.MessageLength:=htonl(sizeof(cHead)+sizeof(cBind_Resp));
    cBind_Resp.Result:=0;
    RecvSize1:=Socket.SendBuf(cHead,SizeOf(cHead));
    RecvSize2:=Socket.SendBuf(cBind_Resp,SizeOf(cBind_Resp));
    if (RecvSize1+RecvSize2)<>ntohl(cHead.MessageLength) then
    begin
      memo1.Lines.Add(''''****

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

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