제가 서버 부분을 작성하고 있는데 컴포넌트는 TIdTCPServer 를 사용하고 있습니다
단말기에서 파일 수신 요청이 들어오면 파일을 확인하고 제가 단말기로 파일 송신 요청을 하면
단말기에서 하나의 파일을 5개로 쪼개서 보냅니다
그러면 하나하나 CRC 체크를 해서 제가 다음 파일 요청을 보내야되는데
대략적인 소스는 아래와 같은데
문제는 AThread.Connection.ReadBuffer(DATA_PACKET , SizeOf(DATA_PACKET));
이 부분에서 멈춰버리기 때문에 단말기에서는 다음 패킷 전송 요구를 받지 못하므로 걍 전송실패로 빠지게 됩니
다..
이 문제를 해결할려면 어떻게 해야되나요...
For i := 1 To 5 Do Begin
AThread.Connection.ReadBuffer(DATA_PACKET , SizeOf(DATA_PACKET));
If Not func_TempSum Then Begin // CRC 체크
// 전송실패 패킷전송
AThread.Connection.WriteBuffer(COMMAND_PACKET , SizeOf(COMMAND_PACKET),true);
AThread.Terminate;
Exit;
End;
// 다음패킷 전송요구
AThread.Connection.WriteBuffer(COMMAND_PACKET , SizeOf(COMMAND_PACKET),true);
End;
일방적으로 던지고, 순차적으로 받고 이렇게 하지 마시고..
패킷을 한번 던지면 받았다는 응답을 던지시고, 그 응답을 받으면 다음 패킷을 던지시고
이렇게 수정해보세요...
틀림없이 잘 동작할겁니다..
그럼..즐거운 프로그래밍 하시구요~