uClientMain.pas
上传用户:cnjnqp
上传日期:2022-05-02
资源大小:194k
文件大小:4k
源码类别:

打印编程

开发平台:

Delphi

  1. unit uClientMain;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ScktComp, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Buttons, Spin;
  6. const
  7.     SocketHost = '172.16.1.6'; //服务器端地址
  8. type
  9.   TfrmClientMain = class(TForm)
  10.     ToolBar1: TToolBar;
  11.     tbConnected: TToolButton;
  12.     ToolButton1: TToolButton;
  13.     tbSend: TToolButton;
  14.     ToolButton2: TToolButton;
  15.     tbClose: TToolButton;
  16.     ToolButton3: TToolButton;
  17.     tbDisconnected: TToolButton;
  18.     ClientSocket: TClientSocket;
  19.     StatusBar: TStatusBar;
  20.     Panel1: TPanel;
  21.     Label2: TLabel;
  22.     Edit3: TEdit;
  23.     Label1: TLabel;
  24.     Label3: TLabel;
  25.     Edit1: TEdit;
  26.     Button1: TButton;
  27.     btnSend: TBitBtn;
  28.     GroupBox1: TGroupBox;
  29.     Memo1: TMemo;
  30.     SpinEdit1: TSpinEdit;
  31.     procedure tbConnectedClick(Sender: TObject);
  32.     procedure tbDisconnectedClick(Sender: TObject);
  33.     procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
  34.     procedure tbSendClick(Sender: TObject);
  35.     procedure tbCloseClick(Sender: TObject);
  36.     procedure FormShow(Sender: TObject);
  37.     procedure ClientSocketConnect(Sender: TObject;
  38.       Socket: TCustomWinSocket);
  39.     procedure ClientSocketConnecting(Sender: TObject;
  40.       Socket: TCustomWinSocket);
  41.     procedure ClientSocketDisconnect(Sender: TObject;
  42.       Socket: TCustomWinSocket);
  43.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  44.     procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
  45.       ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  46.     procedure Button1Click(Sender: TObject);
  47.     procedure Edit1KeyUp(Sender: TObject; var Key: Word;
  48.       Shift: TShiftState);
  49.   private
  50.     { Private declarations }
  51.   public
  52.     { Public declarations }
  53.   end;
  54. var
  55.   frmClientMain: TfrmClientMain;
  56. implementation
  57. {$R *.dfm}
  58. //打开套接字连接
  59. procedure TfrmClientMain.tbConnectedClick(Sender: TObject);
  60. begin
  61.    ClientSocket.Open ;
  62. end;
  63. //关闭套接字连接
  64. procedure TfrmClientMain.tbDisconnectedClick(Sender: TObject);
  65. begin
  66.     ClientSocket.Close;
  67. end;
  68. //接受服务器端的回复
  69. procedure TfrmClientMain.ClientSocketRead(Sender: TObject;
  70.   Socket: TCustomWinSocket);
  71. begin
  72.    Memo1.Lines.Add(Socket.ReceiveText);
  73. end;
  74. //发送信息到服务器端
  75. procedure TfrmClientMain.tbSendClick(Sender: TObject);
  76. begin
  77.     ClientSocket.Socket.SendText(Edit1.Text);
  78. end;
  79. procedure TfrmClientMain.tbCloseClick(Sender: TObject);
  80. begin
  81.     Close;
  82. end;
  83. //设置要连接的服务器端地址
  84. procedure TfrmClientMain.FormShow(Sender: TObject);
  85. begin
  86.     ClientSocket.Host := SocketHost;
  87. end;
  88. //已经连接到服务器端
  89. procedure TfrmClientMain.ClientSocketConnect(Sender: TObject;
  90.   Socket: TCustomWinSocket);
  91. begin
  92.     tbSend.Enabled := True;
  93.     tbDisconnected.Enabled :=True;
  94.     btnSend.Enabled := True;
  95.     StatusBar.Panels[0].Text := '已经连接到 '+ Socket.RemoteHost ;
  96. end;
  97. //正在连接到服务器端
  98. procedure TfrmClientMain.ClientSocketConnecting(Sender: TObject;
  99.   Socket: TCustomWinSocket);
  100. begin
  101.     StatusBar.Panels[0].Text := '正在连接到服务器... ' ;
  102. end;
  103. //当断开与服务器端的连接时发生
  104. procedure TfrmClientMain.ClientSocketDisconnect(Sender: TObject;
  105.   Socket: TCustomWinSocket);
  106. begin
  107.     tbSend.Enabled := False;
  108.     btnSend.Enabled := False;
  109.     tbDisconnected.Enabled := False;
  110.     StatusBar.Panels[0].Text := '已经断开与 '+ Socket.RemoteHost +' 的连接';
  111. end;
  112. procedure TfrmClientMain.FormClose(Sender: TObject;
  113.   var Action: TCloseAction);
  114. begin
  115.     ClientSocket.Close ;
  116. end;
  117. //当与服务器端的连接发生错误时
  118. procedure TfrmClientMain.ClientSocketError(Sender: TObject;
  119.   Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  120.   var ErrorCode: Integer);
  121. begin
  122.   StatusBar.Panels[0].Text := '与服务器端的连接发生错误';
  123.   ErrorCode := 0;
  124. end;
  125. procedure TfrmClientMain.Button1Click(Sender: TObject);
  126. begin
  127.   ClientSocket.Host :=trim(Edit3.Text) ;
  128.   ClientSocket.Port :=SpinEdit1.Value ;
  129.   ToolBar1.Enabled :=true;
  130. end;
  131. procedure TfrmClientMain.Edit1KeyUp(Sender: TObject; var Key: Word;
  132.   Shift: TShiftState);
  133. begin
  134.   if (Key=13) and (trim(Edit1.Text)<>'') then ClientSocket.Socket.SendText(Edit1.Text);
  135. end;
  136. end.