CRC체크는 RS-232등의 시리얼 포트를 이용해서 통신하는 것이라면 모르지만
TCP/IP에서는 패킷의 전달 여부를 확인하기 위해서는 전혀~~~ 필요 없는 일입니다.
DATA_PACKET 구조를 좀 알아야 답변을 드릴 수 있을 듯 하네요
윤박사 님이 쓰신 글 :
: 제가 서버 부분을 작성하고 있는데 컴포넌트는 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;
|