• Delphi中Indy10的IdTcpClient和IdTcpServer数据通信


    ---------例子是XE的----

    只是本人测试的,仅供学习!代码很乱!

    在一个程序中测试 IdTcpClient和IdTcpServer有点坑,

    测试的时候最好写Client和Server两个程序测试

    --------------------

    -------------------------Unit开始

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, IdContext, StdCtrls, IdTCPConnection, IdTCPClient, IdBaseComponent,
    IdComponent, IdCustomTCPServer, IdTCPServer,IdGlobal, IdIOHandler,
    IdIOHandlerStream, IdIntercept, IdIOHandlerSocket, IdIOHandlerStack, ExtCtrls,
    IdAntiFreezeBase, IdAntiFreeze ;

    type
    TMData = record
    id:Integer;
    Name:Array[0..20] of Char;
    Age:Byte;
    UpdateTime:double;
    end;
    TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    IdTCPClient1: TIdTCPClient;
    Button4: TButton;
    Button5: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    Button6: TButton;
    IdAntiFreeze1: TIdAntiFreeze;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure IdTCPServer1Execute(AContext: TIdContext);
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure IdTCPServer1Connect(AContext: TIdContext);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure IdTCPClient1Connected(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    private
    ClientIPList:TList;
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation
    uses IdSchedulerOfThread;
    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
    SendD: TMData;
    begin
    if not IdTCPClient1.Connected then
    IdTCPClient1.Connect;
    SendD.ID := 10;
    StrPCopy(SendD.Name,'Delphi 您好');
    SendD.age := 18;
    SendD.UpdateTime := Now;
    IdTCPClient1.IOHandler.DefStringEncoding:=TEncoding.ASCII;//TEncoding.ASCII;//TEncoding.Unicode;
    IdTCPClient1.IOHandler.Write(#100); //提前发送一个标识符,用于区分数据
    IdTCPClient1.IOHandler.Write(RawToBytes(SendD, SizeOf(SendD)));

    end;

    procedure TForm1.Button4Click(Sender: TObject);
    var
    MyIdTCPConnection:TIdTCPConnection;
    vIOHandler:TIdIOHandler;
    vv:TIdContext;
    begin
    try
    //MyIdTCPConnection:=TIdTCPConnection.Create(nil);
    //vIOHandler:=TIdIOHandler.Create(nil);
    //MyIdTCPConnection.IOHandler :=vIOHandler;
    //
    //ShowMessage(TIdContext(ClientIPList.Items[0]).Connection.Name+','+TIdContext(ClientIPList.Items[0]).binding.peerIp);

    //ShowMessage(IntToStr(TIdTCPConnection(ClientIPList.Items[0]).IOHandler.Port)+',,'+TIdTCPConnection(ClientIPList.Items[0]).IOHandler.Host);
    //MyIdTCPConnection.IOHandler.Port:=5050;
    //MyIdTCPConnection.IOHandler.Host:='192.168.1.50';
    //MyIdTCPConnection.IOHandler.DefStringEncoding:=TEncoding.ASCII;//TEncoding.ASCII;//TEncoding.Unicode;
    //MyIdTCPConnection.Socket.Binding.SetPeer('192.168.1.50',5050);
    //MyIdTCPConnection.Socket.Open ;
    //MyIdTCPConnection.IOHandler.Open;
    //MyIdTCPConnection.IOHandler.Write('Qaaam');
    //ShowMessage(TIdTCPConnection(ClientIPList.Items[0]));
    //TIdContext(ClientIPList.Items[0]).Connection.IOHandler.Write('AAAA');
    //TIdTCPConnection(ClientIPList.Items[0]).IOHandler.Write(#10,TIdTextEncoding.ASCII);
    //TIdTCPConnection(ClientIPList.Items[0]).IOHandler.Writeln('QAAAAN',TIdTextEncoding.ASCII);
    //----------------------------
    //ShowMessage(IntToStr(TIdYarnOfThread(TIdContext(ClientIPList.Items[0]).Yarn).Thread.ThreadID));
    //if TIdYarnOfThread(TIdContext(ClientIPList.Items[0]).Yarn).Thread.Suspended then
    //TIdYarnOfThread(TIdContext(ClientIPList.Items[0]).Yarn).Thread.Resume;
    ////vv:=TIdContext(ClientIPList.Items[0]);
    //TIdContext(ClientIPList.Items[0]).Connection.IOHandler.CheckForDisconnect(True, True);
    ////vv.Connection.IOHandler.DefStringEncoding := TIdTextEncoding.ASCII;
    //TIdContext(ClientIPList.Items[0]).Connection.IOHandler.Write('QAAAAN',TIdTextEncoding.ASCII);
    ////if vv.Connection.IOHandler.Opened then
    ////ShowMessage('已连接');
    ////vv.Connection.Socket.Write('200: 数据接收成功!');
    //啊啊啊啊啊啊啊啊,气死人了!测试了这么多,以为代码有问题!!!!在同一个进程中这玩意有问题,
    //建立客户端服务器两个程序的时候,这样的代码可以!妈耶!不知道什么情况!!!
    vv:=TIdContext(IdTCPServer1.Contexts.LockList.Items[0]);
    vv.Connection.IOHandler.Write('QAAAAN');

    //------------------------------
    //TIdTCPConnection(ClientIPList.Items[0]).SendCmd('888') ;
    finally
    //FreeAndNil(MyIdTCPConnection);
    //FreeAndNil(vIOHandler);
    IdTCPServer1.Contexts.UnlockList;
    end;
    end;

    procedure TForm1.Button5Click(Sender: TObject);
    begin
    Timer1.Enabled:=not Timer1.Enabled ;
    if Timer1.Enabled then
    Button5.Caption:='不显示'
    else
    Button5.Caption:='显示';
    //ShowMessage(IdTCPClient1.Intercept.ReadString(IdTCPClient1.IOHandler.InputBuffer.Size,TIdTextEncoding.UTF8 ));
    //ShowMessage(IdTCPClient1.IOHandler.ReadString(IdTCPClient1.IOHandler.InputBuffer.Size,) );
    end;

    procedure TForm1.Button6Click(Sender: TObject);
    begin
    //IdTCPClient1.IOHandler.Write(#10);
    if not IdTCPClient1.Connected then
    IdTCPClient1.Connect;
    IdTCPClient1.IOHandler.DefStringEncoding:=TEncoding.ASCII;//TEncoding.ASCII;//TEncoding.Unicode;
    //IdTCPClient1.IOHandler.Write(#0); //提前发送一个标识符,用于区分数据
    IdTCPClient1.IOHandler.Write('BAAAAC',TIdTextEncoding.ASCII);
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    FreeAndNil(ClientIPList);
    end;

    procedure TForm1.FormShow(Sender: TObject);
    begin
    ClientIPList:=TList.Create;
    IdTCPServer1.Active:=True;

    end;

    procedure TForm1.IdTCPClient1Connected(Sender: TObject);
    begin
    //ShowMessage('连接客户端');
    end;

    procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
    begin

    if Length(AContext.Binding.PeerIP)>5 then//AContext.Connection.Socket.Binding.PeerIP;
    ClientIPList.Add(AContext);
    //TIdYarnOfThread(acontext.Yarn).Thread.ThreadID;

    end;

    procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
    var
    RData:TMData;
    buf:TIdBytes;
    sCmd:Char;
    sList:TStrings;
    I:Integer;
    ListCount:Integer;
    ss:string;
    begin
    //ACONTEXT.Connection.IOHandler.WriteLn('Recive Message!');
    //AContext.Connection
    {sCmd := AContext.Connection.IOHandler.ReadChar; //先读取Char结构数据
    if sCmd = #100 then //接收结构体
    begin
    AContext.Connection.IOHandler.ReadBytes(buf,SizeOf(RData));
    BytesToRaw(buf, RData, SizeOf(RData));
    with Memo1.lines do begin
    Add('IP:'+AContext.Connection.Socket.Binding.PeerIP);
    Add('ID:'+Inttostr(RData.Id));
    Add('Name:'+StrPas(RData.Name));
    Add('Age:'+Inttostr(RData.age));
    Add('UpdateTime:'+DateTimeToStr(RData.UpdateTime));
    end;
    end //TCPClient.IOHandler.DefStringEncoding:=TEncoding.ASCII;
    else }
    //sCmd := AContext.Connection.IOHandler.ReadChar ;
    ss:=AContext.Connection.IOHandler.Readstring(AContext.Connection.IOHandler.InputBuffer.Size,TIdTextEncoding.ASCII );
    if ss<>'' then
    begin
    Memo1.Lines.Add(ss); //AContext.Connection.IOHandler.InputBuffer.Size,
    AContext.Connection.IOHandler.Write('88888888888',TIdTextEncoding.ASCII );
    end;


    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    ss:string;
    begin
    ss:=IdTCPClient1.IOHandler.ReadString(IdTCPClient1.IOHandler.InputBuffer.Size);
    Edit2.Text:=ss;
    if ss<>'' then
    Edit1.Text:=ss


    //IdTCPClient1.IOHandler.InputBuffer.Clear;
    end;

    end.

    --------------------------------------
    Delphi XE IdTCPClient1 和 IdTCPServer1 数据的发送与接收(indy10)_136.la https://www.136.la/shida/show-131002.html
    -------------------------------------------------------------------------------------

    1、IdTCPClient1 端 发送数据

    1.1 发送结构体:

    //定义结构体
    TMData = record
    id:Integer;
    Name:Array[0..20] of Char;
    Age:Byte;
    UpdateTime:double;
    end;

    //发送
    procedure TForm2.Button2Click(Sender: TObject);
    var
    SendD: TMData;
    begin
    SendD.ID := 10;
    StrPCopy(SendD.Name, ‘Delphi 您好‘);
    SendData.age := 18;
    SendD.UpdateTime := Now;
    IdTCPClient1.IOHandler.Write(#100); //提前发送一个标识符,用于区分数据
    IdTCPClient1.IOHandler.Write(RawToBytes(SendD, SizeOf(SendD)));
    end;
    1.2 发送TStrings类型

    procedure TForm2.Button3Click(Sender: TObject);
    var
    sList:TStrings;
    I:Integer;
    begin
    sList := TStringList.Create;
    for I :=0 to 50 do
    begin
    sList.Add(‘数据Test‘ + IntToStr(i));
    end;
    IdTCPClient1.IOHandler.Write(#200);  
    IdTCPClient1.IOHandler.Write(sList.Count);
    IdTCPClient1.IOHandler.Write(ToBytes(sList.Text,TIdTextEncoding.UTF8));
    end;
    1.3 发送一行字符串数据

    procedure TForm2.Button4Click(Sender: TObject);
    begin
    IdTCPClient1.IOHandler.Write(#10);
    IdTCPClient1.IOHandler.Write(‘Delphi测试‘,TIdTextEncoding.UTF8);
    end;
      

    2、IdTCPServer端 接收数据:

    procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
    var
    RData:TMData;
    buf:TIdBytes;
    sCmd:Char;
    sList:TStrings;
    I:Integer;
    ListCount:Integer;
    begin
    sCmd := AContext.Connection.IOHandler.ReadChar; //先读取Char结构数据
    if sCmd = #100 then //接收结构体
    begin
    AContext.Connection.IOHandler.ReadBytes(buf,SizeOf(RData));
    BytesToRaw(buf, RData, SizeOf(RData));
    with Memo1.lines do begin
    Add(‘ID:‘+Inttostr(RData.Id));
    Add(‘Name:‘+StrPas(RData.Name));
    Add(‘Age:‘+Inttostr(ReadData.age));
    Add(‘UpdateTime:‘+DateTimeToStr(RData.UpdateTime));
    end;
    end else if sCmd = #200 then //接收 TStrings
    begin
    ListCount := AContext.Connection.IOHandler.ReadLongInt; //ReadLongInt
    sList := TStringList.Create;
    try
    AContext.Connection.IOHandler.ReadStrings(sList,ListCount,TIdTextEncoding.UTF8);
    for I :=0 to sList.Count-1 do begin
    Memo1.Lines.Add(sList.Strings[I]);
    end;
    finally
    sList.Free;
    end;
    end else if sCmd = #10 then
    begin
    Memo1.Lines.Add(AContext.Connection.IOHandler.ReadString(AContext.Connection.IOHandler.InputBuffer.Size,TIdTextEncoding.UTF8) );
    end else
    AContext.Connection.IOHandler.InputBuffer.Clear;  //清除
    end;

    --------------------------Unit结束

    ----------------Form开始

    object Form1: TForm1
    Left = 0
    Top = 0
    Caption = 'Form1'
    ClientHeight = 383
    ClientWidth = 870
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'Tahoma'
    Font.Style = []
    OldCreateOrder = False
    OnDestroy = FormDestroy
    OnShow = FormShow
    PixelsPerInch = 96
    TextHeight = 13
    object Button1: TButton
    Left = 32
    Top = 272
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
    end
    object Button2: TButton
    Left = 184
    Top = 296
    Width = 75
    Height = 25
    Caption = 'Button2'
    TabOrder = 1
    end
    object Button3: TButton
    Left = 312
    Top = 296
    Width = 75
    Height = 25
    Caption = 'Button3'
    TabOrder = 2
    end
    object Memo1: TMemo
    Left = 536
    Top = 8
    Width = 313
    Height = 313
    ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
    Lines.Strings = (
    'Memo1')
    TabOrder = 3
    end
    object Button4: TButton
    Left = 536
    Top = 350
    Width = 75
    Height = 25
    Caption = 'Button4'
    TabOrder = 4
    OnClick = Button4Click
    end
    object Button5: TButton
    Left = 288
    Top = 350
    Width = 75
    Height = 25
    Caption = 'Button5'
    TabOrder = 5
    OnClick = Button5Click
    end
    object Edit1: TEdit
    Left = 184
    Top = 328
    Width = 321
    Height = 21
    ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
    TabOrder = 6
    Text = 'Edit1'
    end
    object Button6: TButton
    Left = 32
    Top = 304
    Width = 75
    Height = 25
    Caption = 'Button6'
    TabOrder = 7
    OnClick = Button6Click
    end
    object Edit2: TEdit
    Left = 369
    Top = 354
    Width = 96
    Height = 21
    ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
    TabOrder = 8
    Text = 'Edit1'
    end
    object IdTCPServer1: TIdTCPServer
    Bindings = <
    item
    IP = '192.168.1.50'
    Port = 5050
    end>
    DefaultPort = 0
    OnConnect = IdTCPServer1Connect
    OnExecute = IdTCPServer1Execute
    Left = 288
    Top = 48
    end
    object IdTCPClient1: TIdTCPClient
    OnConnected = IdTCPClient1Connected
    ConnectTimeout = 1000
    Host = '192.168.1.50'
    IPVersion = Id_IPv4
    Port = 5050
    ReadTimeout = 2000
    Left = 104
    Top = 40
    end
    object Timer1: TTimer
    Enabled = False
    Interval = 100
    OnTimer = Timer1Timer
    Left = 248
    Top = 352
    end
    object IdAntiFreeze1: TIdAntiFreeze
    Left = 88
    Top = 104
    end
    end

    ------------------Form结束

    -----------------------------------------------------------------------杂七杂八的小笔记------开始----------

    -1----杂七杂八----开始

     1 unit Unit1;
     2 
     3 interface
     4 
     5 uses
     6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     7   Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, ExtCtrls,
     8   StdCtrls;
     9 
    10 type
    11   TFrmMainFiasSimulate = class(TForm)
    12     IdTCP_Issue: TIdTCPClient;
    13     IdTCP_PMS: TIdTCPClient;
    14     Panel_Issue: TPanel;
    15     Panel_PMS: TPanel;
    16     GroupBox1: TGroupBox;
    17     Memo1: TMemo;
    18     Edit_IssueMessage: TEdit;
    19     Button_SendMessage: TButton;
    20     Edit_IssueIP: TEdit;
    21     Edit_IssuePort: TEdit;
    22     GroupBox2: TGroupBox;
    23     Memo2: TMemo;
    24     Edit2: TEdit;
    25     Button1: TButton;
    26     Edit_PMSIP: TEdit;
    27     Edit_PMSPort: TEdit;
    28     Button_Connect: TButton;
    29     Button_DisConnect: TButton;
    30     Timer_Issue: TTimer;
    31     procedure Button_ConnectClick(Sender: TObject);
    32     procedure Button_DisConnectClick(Sender: TObject);
    33     procedure Button_SendMessageClick(Sender: TObject);
    34     procedure Timer_IssueTimer(Sender: TObject);
    35   private
    36     { Private declarations }
    37   public
    38     { Public declarations }
    39   end;
    40 
    41 var
    42   FrmMainFiasSimulate: TFrmMainFiasSimulate;
    43 
    44 implementation
    45 
    46 {$R *.dfm}
    47 
    48 procedure TFrmMainFiasSimulate.Button_ConnectClick(Sender: TObject);
    49 begin
    50   IdTCP_Issue.Host:=Edit_IssueIP.Text;
    51   IdTCP_Issue.Port:=StrToInt(Edit_IssuePort.Text);
    52   IdTCP_Issue.Connect;
    53   IdTCP_Issue.IOHandler.DefStringEncoding:=TEncoding.Unicode;//TEncoding.ASCII
    54 end;
    55 
    56 procedure TFrmMainFiasSimulate.Button_DisConnectClick(Sender: TObject);
    57 begin
    58   //IdTCP_Issue.Socket.Close;//IdTCP_Issue.Socket.InputBuffer.Clear;
    59   IdTCP_Issue.DisConnect;
    60   IdTCP_Issue.Socket.InputBuffer.Clear;//IdTCP_Issue.Socket.Close;
    61   //IdTCP_Issue.Socket.CheckForDataOnSource()
    62 end;
    63 
    64 procedure TFrmMainFiasSimulate.Button_SendMessageClick(Sender: TObject);
    65 begin
    66   IdTCP_Issue.IOHandler.DefStringEncoding:=TEncoding.Unicode;//TEncoding.ASCII;//TEncoding.Unicode;
    67   //IdTCP_Issue.IOHandler.Write(#1);
    68   IdTCP_Issue.IOHandler.Write(Edit_IssueMessage.Text );
    69 end;
    70 
    71 procedure TFrmMainFiasSimulate.Timer_IssueTimer(Sender: TObject);
    72 var
    73   vs:string;
    74 begin
    75   try
    76     if not IdTCP_Issue.Connected  then
    77       Exit;
    78     vs:=IdTCP_Issue.IOHandler.ReadString(IdTCP_Issue.IOHandler.InputBuffer.Size ,TEncoding.Unicode);//有中文还是用 TEncoding.Unicode
    79     //vs:=IdTCP_Issue.IOHandler.ReadString(IdTCP_Issue.IOHandler.InputBuffer.Size ,TEncoding.ASCII);
    80     if vs<>'' then
    81       Memo1.Lines.Add(vs) ;
    82   except
    83     //IdTCP_Issue.Socket.Close;
    84     try
    85       IdTCP_Issue.DisConnect;
    86       IdTCP_Issue.Socket.InputBuffer.Clear ; //IdTCP_Issue.Socket.Close这里这么写不行
    87       IdTCP_Issue.Connect;
    88     except
    89 
    90     end;
    91 
    92   end;
    93 
    94 
    95 end;
    96 
    97 end.
    View Code

    -1----杂七杂八----结束

    --2----杂七杂八----开始

     1 unit Unit1;
     2 
     3 interface
     4 
     5 uses
     6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     7   Dialogs, IdContext, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
     8   IdTCPServer;
     9 
    10 type
    11   TFrmMainIssueCard = class(TForm)
    12     IdTCPServer1: TIdTCPServer;
    13     Memo1: TMemo;
    14     Button1_StartService: TButton;
    15     Button2_Stop: TButton;
    16     Edit_IP: TEdit;
    17     Edit_Port: TEdit;
    18     procedure IdTCPServer1Execute(AContext: TIdContext);
    19     procedure IdTCPServer1Connect(AContext: TIdContext);
    20     procedure FormShow(Sender: TObject);
    21     procedure Button1_StartServiceClick(Sender: TObject);
    22     procedure Button2_StopClick(Sender: TObject);
    23   private
    24     { Private declarations }
    25   public
    26     { Public declarations }
    27   end;
    28 
    29 var
    30   FrmMainIssueCard: TFrmMainIssueCard;
    31 
    32 implementation
    33 
    34 uses
    35   IdGlobal,IdSocketHandle;
    36 
    37 {$R *.dfm}
    38 
    39 procedure TFrmMainIssueCard.Button1_StartServiceClick(Sender: TObject);
    40 var
    41   vIdSocket:TIdSocketHandle;
    42 begin
    43   IdTCPServer1.Bindings.Clear;
    44   vIdSocket:=IdTCPServer1.Bindings.Add;
    45   //vIdSocket.IP:=Edit_IP.Text;
    46   vIdSocket.Port:=StrToInt(Edit_Port.Text);
    47   IdTCPServer1.Active:=True;
    48 end;
    49 
    50 procedure TFrmMainIssueCard.Button2_StopClick(Sender: TObject);
    51 begin
    52   IdTCPServer1.Active:=False;
    53 end;
    54 
    55 procedure TFrmMainIssueCard.FormShow(Sender: TObject);
    56 begin
    57   Memo1.Lines.Clear;
    58 end;
    59 
    60 procedure TFrmMainIssueCard.IdTCPServer1Connect(AContext: TIdContext);
    61 begin
    62   if Length(AContext.Binding.PeerIP)>5 then//AContext.Connection.Socket.Binding.PeerIP;
    63   begin
    64     AContext.Connection.IOHandler.DefStringEncoding:=TIdTextEncoding.Unicode;
    65     Memo1.Lines.Add('用户连接IP:'+AContext.Binding.PeerIP);
    66     AContext.Binding.Send('连接成功!',TIdTextEncoding.Unicode); //TIdTextEncoding.ASCII
    67   end;
    68 
    69 end;
    70 
    71 procedure TFrmMainIssueCard.IdTCPServer1Execute(AContext: TIdContext);
    72 var
    73   sCmd:Char;
    74   vs:string;
    75 begin
    76   //sCmd := AContext.Connection.IOHandler.ReadChar; //先读取Char结构数据
    77   //if sCmd =#1 then
    78 
    79   begin
    80     vs:=AContext.Connection.IOHandler.Readstring(AContext.Connection.IOHandler.InputBuffer.Size,TIdTextEncoding.Unicode ); //TIdTextEncoding.Unicode
    81     if vs<>'' then
    82     begin
    83       Memo1.Lines.Add(AContext.Connection.Socket.Binding.PeerIP+'-----此次会话开始--------');
    84       Memo1.Lines.Add(vs); //AContext.Connection.IOHandler.InputBuffer.Size,
    85       AContext.Connection.IOHandler.Write('您的消息服务器接收成功!',TIdTextEncoding.Unicode );
    86       Memo1.Lines.Add(AContext.Connection.Socket.Binding.PeerIP+'-----此次会话结束--------');
    87     end;
    88   end;
    89 
    90 end;
    91 
    92 end.
    View Code

    --2----杂七杂八----结束

    -----------------------------------------------------------------------杂七杂八的小笔记------结束----------

  • 相关阅读:
    使用Junit等工具进行单元测试
    软件工程学习、问题
    贪吃蛇
    使用Junit工具进行单元测试
    两人组
    软件工程的理解
    使用工具进行单元测试
    对软件工程的理解
    单元测试
    我对软件工程的理解
  • 原文地址:https://www.cnblogs.com/dmqhjp/p/14765447.html
Copyright © 2020-2023  润新知