Q&A

  • [질문] Indy를 이용해서 파일 송수신을 구현하고 있습니다
제가 서버 부분을 작성하고 있는데 컴포넌트는 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;
1  COMMENTS
  • Profile
    구창민 2009.09.17 18:46
    안녕하세요..

    일방적으로 던지고, 순차적으로 받고 이렇게 하지 마시고..

    패킷을 한번 던지면 받았다는 응답을 던지시고, 그 응답을 받으면 다음 패킷을 던지시고

    이렇게 수정해보세요...

    틀림없이 잘 동작할겁니다..

    그럼..즐거운 프로그래밍 하시구요~