도와주세요!!
글 수 15,339
2007.12.28 15:57:06 (*.237.221.77)
17916
EZ-X5 보드와 PC 간의 블루투스 시리얼 통신을 이용하여 파일 전송 프로그램을 구현 할려고 하고 있습니다.
하는 도중 막히는 부분이 생겨서 이렇게 글남깁니다.
PC 는 현재 VC++ 로 구현된 파일 전송 프로그램이 구현되어 있습니다.
보드에서 파일을 받는 역할을 수행하는데
보드가 파일의 끝을 정확히 찾아 내는데 애를 먹고 있습니다.
어떻게 하면 파일의 전송이 끝난 것을 확인하는 메시지를 보드에서 받아서 처리 할까요?
어떤 8비트 값을 보내서 값을 확인하는 방법을 생각했는데.... 혹시나 그런 비트를 파일에서 찾게 되는
경우의 수가 생기게 되면 안될 것 같구요. ( 혹시 파일에서 쓰이지 않는 비트는 없을까요? 그걸로 하면 마지막을 찾는것도)
DLE 코드를 삽입해서 하는 방법 생각했는데. 이 방법은 파일 전송에서 그 많은 데이터를 한번 더 검사하고 변형하는
과정이 거치게 되어서 비효율적이라는 생각이 들어 배제한 상황입니다.
어떻게 하면 보드에서 파일의 끝을 정확히 알고 전송이 끝났다는 것을 감지 할수 있는 방법에 대해서
알려주셨으면 합니다 ㅠㅠ 부탁 드립니다.
하는 도중 막히는 부분이 생겨서 이렇게 글남깁니다.
PC 는 현재 VC++ 로 구현된 파일 전송 프로그램이 구현되어 있습니다.
보드에서 파일을 받는 역할을 수행하는데
보드가 파일의 끝을 정확히 찾아 내는데 애를 먹고 있습니다.
어떻게 하면 파일의 전송이 끝난 것을 확인하는 메시지를 보드에서 받아서 처리 할까요?
어떤 8비트 값을 보내서 값을 확인하는 방법을 생각했는데.... 혹시나 그런 비트를 파일에서 찾게 되는
경우의 수가 생기게 되면 안될 것 같구요. ( 혹시 파일에서 쓰이지 않는 비트는 없을까요? 그걸로 하면 마지막을 찾는것도)
DLE 코드를 삽입해서 하는 방법 생각했는데. 이 방법은 파일 전송에서 그 많은 데이터를 한번 더 검사하고 변형하는
과정이 거치게 되어서 비효율적이라는 생각이 들어 배제한 상황입니다.
어떻게 하면 보드에서 파일의 끝을 정확히 알고 전송이 끝났다는 것을 감지 할수 있는 방법에 대해서
알려주셨으면 합니다 ㅠㅠ 부탁 드립니다.
텍스트 파일을 전송한다고 하더라도 한글을 포함할 수 있으므로
전송되는 바이트는 모든 비트를 사용될 수 있으며
특정 제어 코드를 사용하고 싶어도 그 코드를 파일 안에 존재할 수 있으므로
코드만으로 파일의 끝을 확인하겠다라는 것은 어렵습니다.
전송하는 쪽에서 파일의 끝을 알려 주어야
이렇게 파일을 주고 받을 때에는 전송하는 쪽에서 전송할 때 파일의 시작과 종료를
알려 주어야 합니다.
파일 전송에는 여러 프로토콜이 있습니다만,
대부분 파일의 정보를 먼저 보내고, 즉 파일에 필요한 헤더 부분을 먼저 보내고
그리고 파일을 보내는 것을 많이 사용합니다.
즉,
파일 이름과 저자위치, 파일 크기를 전송 ->
<- 파일 크기를 확인, 파일을 보내라 명령 전송
파일을 부분별로 전송 ->
<- 수신하면서 파일 크기를 확인
파일 전송 완료 ->
<- 이상 없고, 다음 파일 정보를 전송하라
파일 이름과 저자위치, 파일 크기를 전송 ->
<- 파일 크기를 확인, 파일을 보내라 명령 전송
- 이후 반복 -
이렇게 말이죠. 또는 파일을 쪼개서 보낼 때에도 파일 부분의 번째 위치와
파일을 보내는데 계산된 총 횟수를 보내기도 합니다.
즉, [부분전송횟수][전체 부분 개수][파일 부분내용] 이렇게 말이죠.
이외에도 매우 다양한 프로토콜이 있으며, 결론은 파일의 끝이나 기타 정보는
전송하는 쪽에서 보내 주어야 합니다.