[ v1.3 基本搞定 ] Delphi UDP + TCP 通信问题

主体思路:先由管理机发UDP命令到客户端,客户端在获取主机IP后,再建立TCP连接,这样就不用手工去客户端设主机IP了,而且主机IP可随意变化。


管理机(TCP服务端 / UDP客户端)源码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls, IdAntiFreezeBase, IdAntiFreeze,
  IdUDPBase, IdUDPClient, IdBaseComponent, IdComponent, IdTCPServer, Winsock, StrUtils;

const
  TCPServerPort = 9001;  //管理机作TCP Server, 主控
  TCPClientSPort = 9000; //考试机作TCP Client
  UDPServerPort = 8000;  //考试机作UDP Server
  UDPClientSPort = 8001; //管理机作UDP Client, 主控, 用于把管理机IP传给考试机

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StatusBar1: TStatusBar;
    GroupBox1: TGroupBox;
    ListBox1: TListBox;
    btnAdd: TButton;
    btnDel: TButton;
    Label1: TLabel;
    btnPingAll: TButton;
    GroupBox2: TGroupBox;
    ListBox2: TListBox;
    GroupBox3: TGroupBox;
    ListBox3: TListBox;
    btnStart: TButton;
    btnStop: TButton;
    btnExport: TButton;
    btnRefresh: TButton;
    btnQuit: TButton;
    IdTCPServer1: TIdTCPServer;
    IdUDPClient1: TIdUDPClient;
    IdAntiFreeze1: TIdAntiFreeze;
    SaveDialog1: TSaveDialog;
    btnPingOne: TButton;
    procedure btnQuitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnPingAllClick(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure btnPingOneClick(Sender: TObject);
    procedure IdTCPServer1Connect(AThread: TIdPeerThread);
  private
    { Private declarations }
    function LocalIP():string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//关闭本程序
procedure TForm1.btnQuitClick(Sender: TObject);
begin
  close;
end;

//初始化参数
procedure TForm1.FormCreate(Sender: TObject);
begin
  //界面内容
  StatusBar1.Panels[0].Text :&#
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值