ServerForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ServerForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ScktComp, StdCtrls;
  6. const
  7.   wm_RefreshClients = wm_User;
  8. type
  9.   TForm1 = class(TForm)
  10.     ServerSocket1: TServerSocket;
  11.     lbMsg: TListBox;
  12.     lbClients: TListBox;
  13.     Label1: TLabel;
  14.     Label2: TLabel;
  15.     lbLog: TListBox;
  16.     procedure ServerSocket1ClientConnect(Sender: TObject;
  17.       Socket: TCustomWinSocket);
  18.     procedure ServerSocket1ClientDisconnect(Sender: TObject;
  19.       Socket: TCustomWinSocket);
  20.     procedure ServerSocket1ClientRead(Sender: TObject;
  21.       Socket: TCustomWinSocket);
  22.   private
  23.     { Private declarations }
  24.   public
  25.     procedure RefreshClients (var Msg: TMessage);
  26.       message wm_RefreshClients;
  27.   end;
  28. var
  29.   Form1: TForm1;
  30. implementation
  31. {$R *.DFM}
  32. procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  33.   Socket: TCustomWinSocket);
  34. begin
  35.   lbLog.Items.Add ('Connected: ' +
  36.     Socket.RemoteHost + ' (' +
  37.     Socket.RemoteAddress + ')' );
  38.   PostMessage (Handle, wm_RefreshClients, 0, 0);
  39. end;
  40. procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  41.   Socket: TCustomWinSocket);
  42. begin
  43.   lbLog.Items.Add ('Disconnected: ' +
  44.     Socket.RemoteHost + ' (' +
  45.     Socket.RemoteAddress + ')' );
  46.   PostMessage (Handle, wm_RefreshClients, 0, 0);
  47. end;
  48. procedure TForm1.RefreshClients;
  49. var
  50.   I: Integer;
  51. begin
  52.   lbClients.Clear;
  53.   for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
  54.     with ServerSocket1.Socket.Connections [I] do
  55.       lbClients.Items.Add (
  56.         RemoteAddress + ' (' + RemoteHost + ')');
  57. end;
  58. procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  59.   Socket: TCustomWinSocket);
  60. begin
  61.   // read from the client
  62.   lbMsg.Items.Add (Socket.RemoteHost + ': ' +
  63.     Socket.ReceiveText);
  64. end;
  65. end.