好像Client端发的信息Server可以接收,但Server发的信息Client收不到,使用INDY的TCP控件。
Client端代码:
unit ClientUnit;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    Shape1: TShape;
    ComboBox1: TComboBox;
    IdTCPClient1: TIdTCPClient;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
  RecMsg: String;
begin
  if comboBox1.text= '' then exit;
  if edit1.text= '' then exit;
  if edit2.text= '' then exit;
  
  idtcpclient1.Host:= edit1.Text;
  idtcpclient1.Port:= StrToInt(edit2.Text);
  try
    try
      idtcpclient1.Connect;
      idtcpclient1.writeln(comboBox1.text);
      RecMsg:= idtcpclient1.readln;
      showmessage(recmsg);
      if RecMsg= 'r' then
      begin
        shape1.Brush.Color:= clRed;
        idtcpClient1.Writeln('Red ok');
      end
      else if RecMsg= 'y' then
      begin
        shape1.Brush.Color:= clYellow;
        idtcpClient1.Writeln('Yellow ok');
      end
      else if RecMsg= 'b' then
      begin
        shape1.Brush.Color:= clBlue;
        idtcpClient1.Writeln('Blue ok');
      end
      else if RecMsg= 'g' then
      begin
        shape1.Brush.Color:= clGreen;
        idtcpClient1.Writeln('Green ok');
      end
      else if RecMsg= 'l' then
      begin
        shape1.Brush.Color:= clLime;
        idtcpClient1.Writeln('Lime ok');
      end;
    finally
      idtcpclient1.Disconnect;
    end;
  except
    on e: Exception do
      ShowMessage('TimeOut!');
  end;
end;end.Server端代码:
unit ServerUnit;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    procedure IdTCPServer1Execute(AThread: TIdPeerThread);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  RecMsg: String;
begin
  RecMsg:= AThread.Connection.ReadLn;
  showmessage(recMsg);
  if pos('红', RecMsg)>1 then
    AThread.Connection.writeln('r')
  else if pos('黄', RecMsg)>1 then
    AThread.Connection.Writeln('y')
  else if pos('蓝', RecMsg)>1 then
    AThread.Connection.Writeln('b')
  else if pos('绿', RecMsg)>1 then
    AThread.Connection.Writeln('g')
  else if pos('青', RecMsg)>1 then
    AThread.Connection.Writeln('l')
  else if Pos('ok', RecMsg)>1 then
    ShowMessage(RecMsg);  end;end.