我对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;
但是,服务器不显示该消息。可以再次帮助我吗?
答案 0 :(得分:4)
在D2009 +中,SendText()
和ReceiveText()
无法正常使用Unicode字符串。最好直接使用SendBuf()
和ReceiveBuf()
。
据说,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;