我有一個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