1

我对 Delphi 2010 不太熟悉,并且在使用组件 ClientSocket 和 ServerSocket 时遇到了麻烦。问题很简单:我正在尝试使用以下代码将文本从客户端发送到服务器:

cliente.Socket.SendText('call');

在服务器端,我编写了以下代码:

procedure TForm6.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s: string;
begin
s:=Socket.ReceiveText;
if s = 'call' then
begin
showmessage('Client is Calling');
end;
end;

但是,服务器不显示消息。能再帮我一次吗?

4

1 回答 1

4

在 D2009+ 中,SendText()不能ReceiveText()正确处理 Unicode 字符串。最好直接使用SendBuf()andReceiveBuf()代替。

话虽如此,TClientSocket并且TServerSocket已经被弃用了很长时间。您应该使用不同的组件集,例如 Indy(也随 Delphi 提供),例如:

IdTCPClient1.IOHandler.WriteLn('call');

procedure TForm6.IdTCPServer1Execute(AContext: TIdContext);
var
  s: string;
begin
  s := AContext.Connection.IOHandler.ReadLn;
  if s = 'call' then
  begin
    // TIdTCPServer is a multi-threaded component,
    // but ShowMessage() is not thread-safe...
    Windows.MessageBox(0, 'Client is Calling', '', MB_OK);
  end;
end;
于 2013-06-10T16:28:59.520 回答