Witam.
Chciałem napsiać prosty serwer odbierający komendy od klienta i wykonywujący je. Klient łączy się normalnie do serwera, ale gdy zostanie wsyłana komenda, serwer nie reaguje. Wszystko jest robione w Delphi 7.

Kod Serwera:

unit Unit1;
 
interface
 
uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    Forms, Dialogs, ScktComp, MMSystem, Sockets, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    TcpServer1: TTcpServer;
    Button1: TButton;
    ListBox1: TListBox;
    procedure SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
   var
   X : string;
   begin
     X := TcpServer1.Receiveln();
     if x = 'a' then begin
      ListBox1.AddItem('Wykonano komendę A', TObject(4));
     end;
  end;
 
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  ListBox1.AddItem('Polaczono...', TObject(3));
end;
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft then
begin
  ReleaseCapture;
  SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.AddItem('Wlaczono...', TObject(1));
  ListBox1.AddItem('Oczekiwanie na polaczenie...', TObject(2));
end;
 
end.

Kod Klienta:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets;
 
type
  TForm1 = class(TForm)
    Klient: TTcpClient;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
Klient.RemoteHost := Edit1.Text;
Klient.Active := True;
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Klient.Sendln('a');
end;
 
end.

Wysyłaną komendą jest litera "a" i serwer powinien zareagować dodając do ListBoxa "Wykonano komendę A". Gdzie leży błąd?