|
안녕하세요. Indy를 이용하여 파일을 전송하려고 하는데 초보자여서 어렵네요.
원래는 리눅스 기반으로 QT를 사용하여 서버와 클라이언트를 구성하였는데.
클라이언트만 C++빌더 기반으로 바꾸려고 합니다.
원래 시스템은 서버(이동 로봇)에서 카메라로 영상을 저장(bmp파일)한 후 클라이언트로 전송하여
클라이언트에서 이 영상을 재생하는 것이 목적입니다.
영상 외에도 text 데이타를 주기적으로 전송하고 있습니다.
소켓 접속부터 text 데이타 전송까지는 성공하였습니다. (타이머, ReadLn이용)
문제는 bmp파일의 전송입니다. 질문이 많습니다. 죄송하지만 꼭 한 번 봐주세요~
질문1)
서버(리눅스/QT기반)에서 text데이타와 그림파일은 각각 주기적으로 보내고 있는데 이러한 경우에
클라이언트(C++빌더)에서 구분하여 받을 수 있는지요?
받을 수 있다면 어떤 식으로 구성해야 하는지?
text 데이타는 ReadLn,타이머1를 이용해서 받고 있습니다.
bmp파일은 ReadBuffer,타이머2를 이용해서 받으면 되는건가요?
질문2)
클라이언트에서 bmp파일 받는 부분은 아래와 같이 넣었는데요
TFileStream* outHandle;
unsigned char *pszBuffer;
pszBuffer = new char[4000];
outHandle = new TFileStream("d:\\camera.bmp", fmCreate);
IdTCPClient1->ReadBuffer(pszBuffer,4000);
outHandle->WriteBuffer(pszBuffer,4000);
RUN 시키면
Project ***.exe raised exception clas EFCreateError with message 'Cannot create file d:\camera.bmp'.
Process stopped. Use Step or continue
라는 에러 메세지가 뜨면서 실행이 안되네요. d:\에 camera.bmp파일은 생성이 됩니다.
질문3)
indy에서 한방에 보내고 받을 수 있는 데이타의 크기는 얼마나 되나요?
현재 서버의 카메라에서 찍어서 저장한 bmp파일이 56.3KB정도입니다.
가능할까요? 나눠서 보내야 하나요?
QT에서 jpg 라이브러리가 죽어도 안 올라가서.. 어쩔수 없이 bmp로 저장해서 전송하고 있습니다.ㅠㅠ
초보자의 두서 없는 긴 글 읽어주셔서 감사합니다..
고수님들의 지도 부탁드릴께요~~
|