Newsgroups : Borland : borland.public.delphi.internet.winsock : 2006 May : TServerSocket.OnClientRead no fired

www.cryer.info
Managed Newsgroup Archive

TServerSocket.OnClientRead no fired

Subject:TServerSocket.OnClientRead no fired
Posted by:"George Wei" (nobo..@yahoo.com)
Date:14 May 2006 19:55:11

Dear all,

I'm using Delphi 6 and try to use TServerSocket and TClientSocket in my
application. The test code is as follows:

//----Code of server side----
procedure TServerForm.FormCreate(Sender: TObject);
begin
  with ServerSocket1 do
  begin
    Close;
    Port := 49536;
    ServerType := stNonBlocking;
    Open;
  end;
end;

procedure TServerForm.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  Memo1.Lines.Add('Error occurs: ' + IntToStr(ErrorCode));
  ErrorCode := 0;
end;

procedure TServerForm.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Connected');
end;

procedure TServerForm.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Disconnected');
end;

procedure TServerForm.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Reading from socket...');
  Memo1.Lines.Add(Socket.ReceiveText);
end;

//----Code of client side----
procedure TClientForm.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  Memo1.Lines.Add('Error occurs: ' + IntToStr(ErrorCode));
  ErrorCode := 0;
end;

procedure TClientForm.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Connected');
end;

procedure TClientForm.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Disconnected');
end;

procedure TClientForm.ClientSocket1Write(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Writing to socket...');
end;

procedure TClientForm.btnSendClick(Sender: TObject);
begin
  with ClientSocket1 do
  begin
    if not Active then
    begin
      Address := '127.0.0.1';
      Port := 49536;
      Open;
    end;
    Socket.SendText('Shaking hands...');
  end;
end;

When I click button btnSend, ServerSocket1ClientConnect is fired but
ServerSocket1ClientRead is not. What's the problem? Thanks for any clues.

BTW, the chat demo provided by Delphi 6 works fine on my machine. I've
compared my application and the demo, but I cannot find any essential
differences, so I'm puzzled.

Regards,
George

Replies:

www.cryer.info
Managed Newsgroup Archive