我有一个 Delphi 程序,它作为服务器接收数据并发送回小的确认包。我以前使用过这段代码(为简洁而编辑)
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。
我被困住了。请问有人能提供任何智慧的话吗?