zoukankan      html  css  js  c++  java
  • 短信猫 TIdTCPServer TIdTCPClient

    短信猫 服务端:

    IdTCPServer1: TIdTCPServer;
    IdAntiFreeze1: TIdAntiFreeze;

    unit UnitSever;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPServer, IdAntiFreezeBase,
      IdAntiFreeze, StdCtrls, ExtCtrls, Sockets, IdUDPBase, IdUDPServer,UGBBig5Convert,Comobj, WordXP,
      DB, DBTables, Buttons,OleServer,ExcelXP,ADODB, IdCustomTCPServer;
    
    type
      TRevData=record
        Data:string;
        Flag:Boolean;
      end;
    
      TDataThread=class(TThread)
         private
           { Private declarations }
         protected
           procedure Execute; override;
         public
           constructor Create(data:string);
      end;
    
      TSeverFrm = class(TForm)
        IdTCPServer1: TIdTCPServer;
        IdAntiFreeze1: TIdAntiFreeze;
        ButtonStart: TButton;
        ButtonClose: TButton;
        Memo1: TMemo;
        Panel1: TPanel;
        GroupBox2: TGroupBox;
        Label1: TLabel;
        Edit_COM: TEdit;
        Label2: TLabel;
        Edit_Tel: TEdit;
        Label3: TLabel;
        Button_Send: TButton;
        Button1: TButton;
        label_conn: TLabel;
        memo_sms_txt: TMemo;
        label_sms_stact: TLabel;
        ListBox1: TListBox;
        Button2: TButton;
        procedure ButtonStartClick(Sender: TObject);
        procedure ButtonCloseClick(Sender: TObject);
        procedure IdTCPServer1Connect(AThread: TIdPeerThread);
        procedure IdTCPServer1Execute(AThread: TIdPeerThread);
        procedure IdTCPServer1Disconnect(AThread: TIdPeerThread);
        procedure Button1Click(Sender: TObject);
        procedure Button_SendClick(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        //procedure Button2Click(Sender: TObject);
    //    procedure SpeedButton1Click(Sender: TObject);
    //    procedure ListBox1Click(Sender: TObject);
    //    procedure ListBox2Click(Sender: TObject);
      private
        { Private declarations }
        procedure WhileGetMSGdo;
        function ServerReadBuffer(AThread: TIdPeerThread):string;
        procedure ServerWtiteBuffer(AThread: TIdPeerThread;strMSG:string);
      public
        { Public declarations }
        sRevData:string;
      end;
    
      function Sms_Connection(CopyRight:pchar;Com_Port,Com_BaudRate:integer;var Mobile_Type,CopyRightToCOM:PChar):integer;stdcall;external 'sms.dll';
      function Sms_Send(Sms_TelNum:string;Sms_Text:string):integer;stdcall;external 'sms.dll';
      Function Sms_Receive(Sms_Type:string;var Sms_Text:PChar):integer;stdcall;external 'sms.dll';
      function Sms_Delete(Sms_Index:string):integer;stdcall;external 'sms.dll';
      function Sms_AutoFlag :integer;stdcall;external 'sms.dll';
      function Sms_NewFlag :integer;stdcall;external 'sms.dll';
      function Sms_Disconnection :integer;stdcall;external 'sms.dll';
    
    var
      SeverFrm: TSeverFrm;
    
    implementation
    
    {$R *.dfm}
    
    function AppPath: string;
    begin
      Result := ExtractFilePath(Application.ExeName);
    end;  
    
    procedure WriteLog(s,Path:string);
    var
      TXT: TextFile;
    begin
      //  FileStr := 'ERROR: '+FormatDateTime('YYYY-MM-DD HH:MM:SS',Now)+' | '+s;
      try
        AssignFile(TXT,Path + 'log.txt');
        if FileExists(Path + 'log.txt') then
           Append(TXT)
        else
           Rewrite(TXT);
        Writeln(TXT,s);
        Flush(TXT);
      finally
        CloseFile(TXT);
      end;
    end;
    
    procedure TDataThread.Execute();
    begin
      repeat
      
      until terminated ;
    end;
    
    constructor TDataThread.Create(data:string);
    begin
    
    end;  
    
    function TSeverFrm.ServerReadBuffer(AThread: TIdPeerThread):string;
    var
      ts:TStrings;
      stream:TStream;
    begin
        try
         stream := TStringStream.Create('');   //��ノㄤ�摸��Stream钡Μぃ�摸��计沮
         AThread.Connection.ReadStream(stream);
         stream.Position :=0;
         ts.LoadFromStream(stream);
         Result := ts.Text;
        finally
          stream.Free;
        end; 
    end;
    
    procedure TSeverFrm.ServerWtiteBuffer(AThread: TIdPeerThread;strMSG:string);
    var
      ts:TStrings;
      stream:TStream;
    begin
      try
       stream := TStringStream.Create(strMSG);
       AThread.Connection.WriteStream(stream);
      finally
        stream.Free;
      end;
    end;  
    
    procedure TSeverFrm.ButtonStartClick(Sender: TObject);
    begin
      IdTCPServer1.Active := True;
      ButtonStart.Enabled := False;
      ButtonClose.Enabled := True;
      Memo1.Lines.Add('MSG: Successful Server Startup...');
    end;
    
    procedure TSeverFrm.ButtonCloseClick(Sender: TObject);
    begin
    IdTCPServer1.Active := False;
    ButtonStart.Enabled := True;
    ButtonClose.Enabled := False;
    Memo1.Lines.Add('MSG: Server is Down...');
    end;
    
    procedure TSeverFrm.IdTCPServer1Connect(AThread: TIdPeerThread);
    begin
      try
        Memo1.Lines.Add('MSG: Host'+AThread.Connection.Socket.Binding.PeerIP+'Connect Server OK');
        AThread.Connection.WriteLn('Connect To Server Success...');      //临琌BufferH�摆��fuck
        //ServerWtiteBuffer(AThread,'硈钡Θ�');
      finally
        
      end;
    end;
    
    procedure TSeverFrm.IdTCPServer1Execute(AThread: TIdPeerThread);
    begin
      if AThread=nil then Exit;
      if not AThread.Connection.Connected then Exit;
      if AThread.Terminated then Exit;
      try
        sRevData := AThread.Connection.ReadLn();
        if Pos('SENDMSG',sRevData)>0 then
        begin
          memo1.Lines.Add(sRevData) ;
           memo_sms_txt.Text:=sRevData;
           AThread.Synchronize(WhileGetMSGdo);
           AThread.Connection.WriteLn('Send Success');
        end;
      except
        WriteLog('ERROR: '+DateTimeToStr(Now)+' | '+AThread.Connection.Socket.Binding.PeerIP+' Receive Data Eexception',AppPath);
      end;
    
    end;
    procedure TSeverFrm.WhileGetMSGdo;    //�め狠祇癳㏑�ㄓ�才�兵ン秈︽矪瞶
    begin
       sRevData:=memo_sms_txt.Text;
       Button_Send.Click;
        {if Sms_Send(Trim(Edit_Tel.Text),memo_sms_txt.Text)=1 then
           label_sms_stact.Caption := 'Send Success+'
        else
           label_sms_stact.Caption := 'Send Failed�'; }
    end;  
    
    procedure TSeverFrm.IdTCPServer1Disconnect(AThread: TIdPeerThread);
    begin
       AThread.Connection.WriteLn('Server Is Down...');
    end;
    
    procedure TSeverFrm.Button1Click(Sender: TObject);
    var
    Mobile_Type:pchar;
    CopyRight:pchar;
    CopyRightToCOM:pchar;
    begin
    CopyRight:=PChar('//上海迅赛信息技术有限公司,网址www.xunsai.com//');         //硂琿�絏��璶�叫ぃ璶�э
    if Sms_Connection(CopyRight,StrToInt(Edit_COM.text),9600,Mobile_Type,CopyRightToCOM)<>0 then
       begin
         Label_conn.Caption:='OK:'+Mobile_Type+'!';
       end
     else
       Label_conn.Caption:='NOT OK!'
    end;
    
    
    procedure TSeverFrm.Button_SendClick(Sender: TObject);
    var
      i:Integer;
    begin
     {if Sms_Send(Trim(Edit_Tel.Text),memo_sms_txt.Text)=1 then
        label_sms_stact.Caption := 'Send Success+'
     else
        label_sms_stact.Caption := 'Send Failed�';  }
      for i:=0 to ListBox1.Items.Count-1 do
      begin
        if Sms_Send(Trim(ListBox1.Items.Strings[i]),memo_sms_txt.Text)=1 then
        label_sms_stact.Caption := 'Send Success+'
        else
        label_sms_stact.Caption := 'Send Failed�';
      end;
    end;
    //------------------------------------------------------------------------------
    procedure TSeverFrm.Button2Click(Sender: TObject);
    Var
      Filename:String;
      MyFile:Textfile;
      i:Integer;
      S:string;
    begin
      Filename:='D:/a.txt';
      AssignFile(Myfile,filename);
      try
        reset(Myfile);
      Except
        rewrite(Myfile);
      end;
      i:=0;
      while not seekEof(Myfile) do
      begin
        readln(Myfile,s);
        ListBox1.Items.Add(S);
        inc(i);
      end;
      CloseFile(Myfile);
    end;
    
    end.
    服务端

    客户端

    IdTCPClient1: TIdTCPClient;
    IdAntiFreeze1: TIdAntiFreeze;

    IdIPWatch1: TIdIPWatch;

    unit UnitClient;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, IdIPWatch;
    
    type
      TRevData=record
        Data:string;
        Flag:Boolean;
      end;
      
      TClientFrm = class(TForm)
        IdTCPClient1: TIdTCPClient;
    
        IdAntiFreeze1: TIdAntiFreeze;
        Panel1: TPanel;
        Edit_Host: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Edit_Port: TEdit;
        Button_Connet: TButton;
        Button_Close: TButton;
        Memo1: TMemo;
        Button_Send: TButton;
        MemoSend: TMemo;
        Label3: TLabel;
        IdIPWatch1: TIdIPWatch;
        procedure Button_ConnetClick(Sender: TObject);
        procedure Button_SendClick(Sender: TObject);
        procedure Button_CloseClick(Sender: TObject);
      private
        { Private declarations }
        SendData:string;//�沮惠璶э跑祇癳�摸��ノ�挡篶砰����舱��摸獺�
        function ClientReadBuffer(IDTCP: TIdTCPClient):string;
        procedure ClientWtiteBuffer(IDTCP: TIdTCPClient;strMSG:string);
      public
        { Public declarations }
      end;
    
    var
      ClientFrm: TClientFrm;
    
    implementation
    
    {$R *.dfm}
    
    function TClientFrm.ClientReadBuffer(IDTCP: TIdTCPClient):string;
    var
      ts:TStrings;
      stream:TStream;
    begin
        try
         stream := TStringStream.Create('');   //��ノㄤ�摸��Stream钡Μぃ�摸��计沮
         IDTCP.ReadStream(stream);
         stream.Position :=0;
         ts.LoadFromStream(stream);
         Result := ts.Text;
        finally
          stream.Free;
        end;
    end;
    
    procedure TClientFrm.ClientWtiteBuffer(IDTCP: TIdTCPClient;strMSG:string);
    var
      ts:TStrings;
      stream:TStream;
    begin
      try
       stream := TStringStream.Create(strMSG);
       IDTCP.WriteStream(stream);
      finally
        stream.Free;
      end;
    end;
    
    
    procedure TClientFrm.Button_ConnetClick(Sender: TObject);
    var
      stream:TStringStream;
    begin
        IdTCPClient1.Host := Trim(Edit_Host.Text);
        IdTCPClient1.Port := StrToInt(Edit_Port.Text);
        Memo1.Lines.Add('タ�硈钡狝叭竟�' + Edit_Host.Text + '...');
        with IdTCPClient1 do
        begin
        try
        Connect(5000);
          try
            Memo1.Lines.Add(ReadLn());
            //Memo1.Lines.Add(ClientReadBuffer(IdTCPClient1)+'++');
            //Memo1.Lines.LoadFromStream(stream);
            Button_Connet.Enabled := False;
            Button_Close.Enabled := True;
          except
            Memo1.Lines.Add('狝叭竟礚臫莱...');
            IdTCPClient1.Disconnect();
          end;
        except
          Memo1.Lines.Add('礚猭�ミ�' + Edit_Host.Text + '�硈钡...');
        end;
        end;
        Button_Send.Enabled := True;
    end;
    
    procedure TClientFrm.Button_SendClick(Sender: TObject);
    begin
      try
         SendData := MemoSend.Text;
         IdTCPClient1.WriteLn(SendData+'--Come From�'+IdIPWatch1.LocalIP);
         Memo1.Lines.Add(IdTCPClient1.ReadLn());
      except
        IdTCPClient1.Disconnect();
        Button_Connet.Enabled := True;
      end;
    end;
    procedure TClientFrm.Button_CloseClick(Sender: TObject);
    var
      strip:string;
    begin
      try
        strip := IdIPWatch1.LocalIP; //IdTCPClient1.Socket.LocalName;;
        IdTCPClient1.WriteLn('SENDMSG�诀�'+strip+' �笆耞秨硈钡');
        //Memo1.Lines.Add(IdTCPClient1.ReadLn()) ;
        IdTCPClient1.Disconnect;
        Memo1.Lines.Add('狝叭竟硈钡�耞秨');
        Button_Connet.Enabled := True;
        //Button_Send.Enabled := False;
    
      except
      end;
    end;
    
    end.
    客户端

    读取txt

    procedure TSeverFrm.Button2Click(Sender: TObject);
    Var
      Filename:String;
      MyFile:Textfile;
      i:Integer;
      S:string;
    begin
      Filename:='D:/a.txt';
      AssignFile(Myfile,filename);
      try
        reset(Myfile);
      Except
        rewrite(Myfile);
      end;
      i:=0;
      while not seekEof(Myfile) do
      begin
        readln(Myfile,s);
        ListBox1.Items.Add(S);
        inc(i);
      end;
      CloseFile(Myfile);
    end;
    

      

  • 相关阅读:
    一个短信验证码倒计时插件
    记一次图片优化经历
    前端开发中两种常见的图片加载方式
    《javascript面向对象精要》读书笔记
    less hack 兼容
    第一次项目总结
    你总说毕业遥遥无期,可转眼就各奔东西
    【翻译】理念:无冲突的扩展本地DOM原型
    【翻译】jQuery是有害的
    202002280156-《统治世界的10种算法(摘自极客大学堂)》
  • 原文地址:https://www.cnblogs.com/rogge7/p/4493680.html
Copyright © 2011-2022 走看看