⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientunit.pas

📁 TCPSocket通信编程 TCPSocket编程的简单实例
💻 PAS
字号:
unit ClientUnit;
//说明:  这是一个简单的实例, 仅仅表明属性设置, 事件编程, 连接及连接情况,
//       发送数据,接收数据的全过程.  其中的发送和接收使用的方法
//        SendText和ReceiveText 都是针对字符串的,
//        现实中的数据应该是二进制数据, 应该使用
//        Sendbuf和Receivebuf  ,处理过程也要复杂得多

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ScktComp, ExtCtrls;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;       //客户 Socket 控件
    BitBtn1: TBitBtn;                   //连接按钮
    Label1: TLabel;                     //显示连接情况
    Memo1: TMemo;                       //键入发送内容的文本编辑器
    Button1: TButton;                   //发送按钮
    Memo2: TMemo;                       //存放接收到的内容
    Label2: TLabel;                     //显示收到字符数
    Button2: TButton;                   //断开按钮
    Button3: TButton;                   //打开按钮
    LabeledEdit1: TLabeledEdit;         //编辑IP地址
    LabeledEdit2: TLabeledEdit;
    Label3: TLabel;         //编辑Port号
    procedure BitBtn1Click(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormShow(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.BitBtn1Click(Sender: TObject);   //连接按钮
begin
ClientSocket1.ClientType:=ctNonBlocking;          //选择无阻塞方式
ClientSocket1.Address:=LabeledEdit1.Text;         //连接前设定IP地址
ClientSocket1.Port:=strtoint(Labelededit2.Text);  //连接前设定 端口号
ClientSocket1.Active:=true;                       //连接的动作
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);                  //连接成功的事件
begin
label1.Caption:='连接 OK!';                   //连接成功的提示信息
Button1.Enabled:=true;                        //将发送按钮设为可用
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);                  //连接失败事件
begin
label1.Caption:='无连接';                     //连接失败时提示信息
Button1.Enabled:=false;                       //将发送按钮设为不能用
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(memo1.text);      //发送memo1中的数据
memo1.Lines.Clear;                              //清理memo1
label3.Caption:='字符数'+inttostr(length(memo1.text));
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);                   //读数据事件
var ss:string;
begin
ss:=ClientSocket1.Socket.ReceiveText;         //及时获得服务器送来的信息
memo2.Lines.Add(ss);              //将获得的字符串放进memo1,使之成为可见
Label2.Caption:='收到字符数'+inttostr(length(ss));
end;

procedure TForm1.FormShow(Sender: TObject);          //屏幕初始事件
begin
   LabeledEdit2.Text:=inttostr(ClientSocket1.Port);  //屏幕上获得客户端口号
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Close;                                 //关闭连接
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.ClientType:=ctNonBlocking;             //选择无阻塞方式
ClientSocket1.Address:=LabeledEdit1.Text;            //连接前设定IP地址
ClientSocket1.Port:=strtoint(Labelededit2.Text);     //连接前设定 端口号
ClientSocket1.Open;                                  //打开连接
//同 ClientSocket1.Active:=true  意思相同
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -