我有一个Delphi程序,它作为一个服务器接收数据并发回小的确认数据包。我先前使用这个代码(编辑为简洁起见)Delphi 7和Indy 9从TCPServer写入数据
procedure TdmServer.OnExecuteTCPServer(AThread: TIdPeerThread);
var
IncomingPacket : string;
ResponsePacket : string;
begin
IncomingPacket := AThread.Connection.Readln(#$03);
if IncomingPacket <> '' then
begin
ResponsePacket := ProcessTelegram(IncomingPacket);
AThread.Connection.writeln(ResponsePacket);
end;
AThread.Connection.Disconnect;
end;
因为它发出,其中,客户端(未我的控制之下),不喜欢这几乎工作得很好,除了追加线CRLF的端部。
所以我把它改为:
AThread.Connection.Write(ResponsePacket);
,并没有什么客户端上接收。
然后我试图
AThread.Connection.WriteBuffer(ResponsePacket, length(ResponsePacket), true);
,试图让它马上写,但它仍然不发送的。
我把延迟,试图打开缓冲区,冲洗并再次关闭它(如帮助文件),但仍然没有喜悦和任何时间FlushWriteBuffer被称为我得到一个AV。
我被卡住了。请任何人提供任何智慧的话?
感谢Remi,我需要解引用字符串。现在它工作正常。 – Kate