나는 데이터를 수신하고 작은 확인 패킷을 돌려 보내는 서버로 앉아있는 델파이 프로그램을 가지고있다. 나는 이전에 클라이언트가 (나의 통제하에) 좋아하지 않는, 전송 거의 라인 CRLF의 끝을 추가 그렇다, 잘 작동이 (간결성을 위해 편집)이 코드델파이 7과 인디 9는 TCP 서버로부터 데이터를 쓰고있다.
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;
을 사용했다.
그래서 나는 그것을 변경 :AThread.Connection.Write(ResponsePacket);
아무것도는 클라이언트에서 수신되지 않습니다.
그때 나는 시도하고 즉시 쓸 얻을AThread.Connection.WriteBuffer(ResponsePacket, length(ResponsePacket), true);
을 시도,하지만 여전히 전혀 보내지 않습니다.
나는 지연을 넣고, 버퍼를 열어 플러시하고 다시 닫았다 (도움말 파일과 같이). 그러나 여전히 기쁨이없고 FlushWriteBuffer가 호출 될 때마다 나는 AV를 얻는다.
막혔습니다. 누구든지 지혜의 말씀을 드릴 수 있습니까?
감사합니다. Remi, 나는 문자열을 역 참조 할 필요가있었습니다. 이제 제대로 작동합니다. – Kate