转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
SGIP的delphi原码         ★★★★

SGIP的delphi原码

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2628 更新时间:2009/4/23 18:39:04

在网上找了好长时间,也没有发现有SGIP的例子,伤感之余,终于做了一个Delphi6.0的SGIP例子
包含了一个服务端和一个客户端,协议共用,服务端为非阻塞长连接,客户端为阻塞短连接,
程序写的很乱,风格也很差,希望高手多多指教 
(dulcet99@163.com,dulcet99@sina.com)

file://客户端
unit TestMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls, ExtCtrls, xy, winsock;
const
  FV_SNumber=3053112345;
  FV_LoginPass=''''hi'''';
  FV_LoginName=''''hi'''';
  FV_SPNumber=''''12345'''';
  T_Tel=''''13000000000'''';
  FV_corpID=''''12345'''';
  T_msg=''''我在天空写下你的名字,没有被风带走'''';
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    ClientSocket1: TClientSocket;
    Button3: TButton;
    Button4: TButton;
    Button2: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    ServerSocket1: TServerSocket;
    panel1: TPanel;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button7Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
    file://客户端协议定义
    sHead:              SGIPHead;       file://消息头定义
    sBind:              XBind;          file://连接请求验证
    sBind_Resp:         Bind_Resp;      file://响应连接请求验证
    sSubmit:            XSubmit;        file://SP->SMG提交短信
    sSubmit_Resp:       Submit_Resp;    file://SMG响应SP提交的短信状态
    sDeliver:           XDeliver;       file://SMG->SP提交短信
    sDeliver_Resp:     Deliver_Resp;  file://SP响应SMG提交的短信状态
    sReport:            XReport;        file://SMG->SP先前的短信状态
    sReport_Resp:       Report_Resp;    file://响应命令执行状况
    file://服务端协议定义
    cHead:              SGIPHead;       file://消息头定义
    cBind:              XBind;          file://连接请求验证
    cBind_Resp:         Bind_Resp;      file://响应连接请求验证
    cSubmit:            XSubmit;        file://SP->SMG提交短信
    cSubmit_Resp:       Submit_Resp;    file://SMG响应SP提交的短信状态
    cDeliver:           XDeliver;       file://SMG->SP提交短信
    cDeliver_Resp:     Deliver_Resp;  file://SP响应SMG提交的短信状态
    cReport:            XReport;        file://SMG->SP先前的短信状态
    cReport_Resp:       Report_Resp;    file://响应命令执行状况
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientSocket1.Active:=false;
  if ClientSocket1.Active then
    memo1.Lines.Add(''''客户端关闭失败'''')
  else
    memo1.Lines.Add(''''客户端关闭成功'''');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Active:=true;
  if ClientSocket1.Active then
    memo1.Lines.Add(''''客户端打开成功'''')
  else
    memo1.Lines.Add(''''客户端打开失败'''');
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  ServerSocket1.Active:=true;
  if ServerSocket1.Active then
    memo1.Lines.Add(''''服务端打开成功'''')
  else
    memo1.Lines.Add(''''服务端打开失败'''');
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  ServerSocket1.Active:=false;
  if ServerSocket1.Active then
    memo1.Lines.Add(''''服务端关闭失败'''')
  else
    memo1.Lines.Add(''''服务端关闭成功'''');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  FV_Date1_S,FV_Date2_S:string;
  str_i,SendSize:integer;
  stream1:TWinSocketStream;
  abc,bc:longword;
begin
    stream1:=TWinSocketStream.Create(ClientSocket1.Socket,30000);
    memo1.Lines.Add(''''-------------------向服务端发送BIND请求--------------------'''');
    if not ClientSocket1.Active then
    begin
      memo1.Lines.Add(''''客户端没有打开'''');
      exit;
    end;
    DateTimeToString(FV_Date1_S,''''mmddhhnnss'''',now);
    DateTimeToString(FV_Date2_S,''''zzz'''',now);
    FillChar(sBind,sizeof(sBind),0);
    FillChar(sHead,sizeof(sHead),0);
    str_i:=sizeof(sHead)+sizeof(sBind);
    sBind.LonginType:=1;
    strpcopy(sBind.LonginPass,FV_LoginPass);
    strpcopy(sBind.LonginName,FV_LoginName);
    abc:=htonl(FV_SNumber);
    sHead.MessageLength:=htonl(str_i);
    sHead.CommandId:=htonl(SGIP_Bind);
    sHead.SNumber1:=abc;
    sHead.SNumber2:=htonl(StrToInt(FV_Date1_S));
    sHead.SNumber3:=htonl(StrToInt(FV_Date2_S));
    stream1.WriteBuffer(sHead,sizeof(sHead));
    stream1.WriteBuffer(sBind,sizeof(sBind));
    memo1.Lines.Add(''''sHead.MessageLength      ''''+inttostr(ntohl(sHead.MessageLength)));
    memo1.Lines.Add(''''sHead.CommandId          ''''+inttostr(ntohl(sHead.CommandId)));
    bc:=ntohl(abc);
    memo1.Lines.Add(''''sHead.SNumber1           ''''+inttostr(bc));
    memo1.Lines.Add(''''sHead.SNumber2           ''''+inttostr(ntohl(sHead.SNumber2)));
    memo1.Lines.Add(''''sHead.SNumber3           ''''+inttostr(ntohl(sHead.SNumber3)));
    memo1.Lines.Add(''''sBind.LonginType         ''''+inttostr(sBind.LonginType));
    memo1.Lines.Add(''''sBind.LonginName         ''''+sBind.LonginName);
    memo1.Lines.Add(''''sBind.LonginPass         ''''+sBind.LonginPass);
    memo1.Lines.Add(''''------------------Bind请求已发送----------------------'''');
    if stream1.WaitForData(5000) then
    begin
      fillchar(cHead,sizeof(cHead),0);
      fillchar(cbind_resp,sizeof(cBind_Resp),0);
      stream1.ReadBuffer(cHead,sizeof(cHead));
      stream1.ReadBuffer(cBind_resp,sizeof(cBind_resp));
    end;
    memo1.Lines.Add(''''cHead.MessageLength      ''''+inttostr(ntohl(cHead.MessageLength)));
    bc:=ntohl(cHead.CommandId);
    memo1.Lines.Add(''''cHead.CommandId          ''''+inttostr(bc));
    bc:=ntohl(cHead.SNumber1);
    memo1.Lines.Add(''''cHead.SNumber1           ''''+inttostr(bc));
    memo1.Lines.Add(''''cHead.SNumber2           ''''+inttostr(ntohl(cHead.SNumber2)));
    memo1.Lines.Add(''''cHead.SNumber3  &n

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


[系统软件]InstallShield Express for delphi制作安装程序定…  [常用软件]InstallShield Express制作Delphi数据库安装程序
[Delphi程序]为什么选择Delphi.Net ?  [Delphi程序]《关于VisiBroker For Delphi的使用》(4)
[Delphi程序]Delphi 程序员代码编写标准指南  [Delphi程序]转贴:Conversion to Delphi 6: Missing unit Pro…
[Delphi程序]Borland Delphi 9 的新特性  [Delphi程序]Delphi 键盘码表
[Delphi程序]Chuck Jazdzewski的离开意味着Delphi的终结吗?  [Delphi程序]Delphi Access violations 问题的解决之道
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台