• Delphi-网络编程-第一个网络方面作品(UDP聊天程序)


    其实这不算是一个聊天程序,因为还不能实现双方互发信息,只有一方能发信息,呵呵

    我以后再改进吧。。。。

    服务端代码:

    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls,
      ExtCtrls,IdSocketHandle;
     
    type
      TCommBlock = record        // 通讯结构
      SenderName,              // 发信方名字
      Msg : string[100];  // 消息
      end;
      TForm1 = class(TForm)
        Memo1: TMemo;
        Panel1: TPanel;
        Memo2: TMemo;
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        LabeledEdit1: TLabeledEdit;
        Button1: TButton;
        IdUDPServer1: TIdUDPServer;
        Button2: TButton;
        Button3: TButton;
        procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
          ABinding: TIdSocketHandle);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);//客户端连接上后触发的事件
    var
      Comm : TCommBlock;
    begin
      AData.ReadBuffer(Comm,AData.Size);
      Memo1.Lines.Add(Comm.SenderName+':'+Comm.Msg);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);//倾听
    begin
      IdUDPServer1.DefaultPort := StrToInt(LabeledEdit1.Text);
      IdUDPServer1.Active := True;
      Button1.Enabled:=True;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);//清空记录
    begin
    Memo1.Clear;
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);//关闭
    begin
    Close;
    end;
     
    end.

    客户端代码:

    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdUDPBase,
      IdUDPClient;
     
    type
      TCommBlock = record        // 通讯结构
        SenderName,              // 发信方名字
        Msg : string[100];  // 消息
      end;
      TForm1 = class(TForm)
        Panel2: TPanel;
        Memo2: TMemo;
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        LabeledEdit1: TLabeledEdit;
        LabeledEdit2: TLabeledEdit;
        Button1: TButton;
        Button2: TButton;
        Memo1: TMemo;
        IdUDPClient1: TIdUDPClient;
        LabeledEdit3: TLabeledEdit;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
    const
      RECIEVETIMEOUT = 5000; // 毫秒,连接等待
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);//连技
    begin
      IdUDPClient1.Host:=LabeledEdit1.Text;
      IdUDPClient1.Port:=StrToInt(LabeledEdit2.Text);
      IdUDPClient1.ReceiveTimeout:=RECIEVETIMEOUT;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);//发送
    var
      Comm:TCommBlock;
    begin
      Comm.SenderName:=LabeledEdit3.Text;
      Comm.Msg:=Memo2.Lines.Text;
      Memo1.Lines.Add(Comm.SenderName+':' + Comm.Msg);
      IdUDPClient1.SendBuffer(Comm,sizeof(Comm));
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);//关闭
    begin
    Close;
    end;
     
    procedure TForm1.Button4Click(Sender: TObject);//清空记录
    begin
    Memo1.Clear;
    end;
     
    end.

    http://www.cnblogs.com/keyvip/archive/2010/11/16/1878713.html

  • 相关阅读:
    001.Kubernetes简介
    DOCKER学习_018:Docker-Compose文件简介
    DOCKER学习_017:Docker-Compose介绍
    DOCKER学习_016:Docker镜像仓库和HARBOR的简单安装和管理
    DOCKER学习_015:Docker网络补充
    接口漏洞
    Shodan搜索引擎在信息搜集中的应用
    Google在情报搜集中的基础技巧
    数据抓包分析基础
    文件上传之图片木马的学习
  • 原文地址:https://www.cnblogs.com/findumars/p/6546058.html
Copyright © 2020-2023  润新知