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()代わりにand をReceiveBuf()直接使用することをお勧めします。

そうは言っても、長い間廃止さTClientSocketTServerSocketてきました。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 に答える