【发布时间】:2013-10-07 13:02:07
【问题描述】:
我有一个 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。
我被困住了。请问有没有人可以提供一些智慧之言?
【问题讨论】: