Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project SERVER1
Project StructureSERVER1.DPRprogram Server1; uses Forms, ServerForm in 'ServerForm.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. SERVERFORM.PASunit ServerForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls; const wm_RefreshClients = wm_User; type TForm1 = class(TForm) ServerSocket1: TServerSocket; lbMsg: TListBox; lbClients: TListBox; Label1: TLabel; Label2: TLabel; lbLog: TListBox; procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public procedure RefreshClients (var Msg: TMessage); message wm_RefreshClients; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin lbLog.Items.Add ('Connected: ' + Socket.RemoteHost + ' (' + Socket.RemoteAddress + ')' ); PostMessage (Handle, wm_RefreshClients, 0, 0); end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin lbLog.Items.Add ('Disconnected: ' + Socket.RemoteHost + ' (' + Socket.RemoteAddress + ')' ); PostMessage (Handle, wm_RefreshClients, 0, 0); end; procedure TForm1.RefreshClients; var I: Integer; begin lbClients.Clear; for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do with ServerSocket1.Socket.Connections [I] do lbClients.Items.Add ( RemoteAddress + ' (' + RemoteHost + ')'); end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin // read from the client lbMsg.Items.Add (Socket.RemoteHost + ': ' + Socket.ReceiveText); end; end. SERVERFORM.DFMobject Form1: TForm1 Left = 192 Top = 107 Width = 518 Height = 353 Caption = 'Server' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = True PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 8 Width = 31 Height = 13 Caption = 'Clients' end object Label2: TLabel Left = 192 Top = 8 Width = 48 Height = 13 Caption = 'Messages' end object lbMsg: TListBox Left = 192 Top = 24 Width = 305 Height = 217 ItemHeight = 13 TabOrder = 0 end object lbClients: TListBox Left = 16 Top = 24 Width = 161 Height = 217 ItemHeight = 13 TabOrder = 1 end object lbLog: TListBox Left = 16 Top = 248 Width = 481 Height = 73 ItemHeight = 13 TabOrder = 2 end object ServerSocket1: TServerSocket Active = True Port = 50 ServerType = stNonBlocking OnClientConnect = ServerSocket1ClientConnect OnClientDisconnect = ServerSocket1ClientDisconnect OnClientRead = ServerSocket1ClientRead Left = 72 Top = 40 end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |