C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[29706] Re:자세하게 다시 올립니다~~
방태윤 [nabty] 1309 읽음    2004-05-13 02:30
제가 아는 부분만 말씀 드려 보겠습니다.참고만 하시고요.
저두 바이너리의 개념이 정확하지가 않네요.
일단 FileRead(iFileHandle, fileDataBuf, 4096);
에서 4096 의 사이즈로 읽어오셨다면 바이너리 형식으로 하신거라도 생각됩니다.
바이너리와 텍스트,스트링의 차이가 제 생각으로는
스트링은 '\0' null 을 만나면 끝을 알리는것이고 텍스트의경우는 '1a' (정확치않음,화일의 끝을 알려주는 문자) 를 만나면 종료 하게 되어 있습니다.
이와 달리 바이너리형식은 그런 규칙을 안 따르므로  사이즈를 정해 주어야 하는걸로 알고 있습니다.
그러므로 님의 경우 이미 바이너리로 전송수신을 하고 있는데...
그 와중에 바이너리 데이터를 스트링 데이터(null을 만나면 종료하는) 로
취급하는 함수를 사용하시는건 아닌지 살펴보시기 바랍니다.

사족으로 strcpy 함수를 보면 사이즈가 없죠?
반면에 strncpy 는 사이즈가 있습니다.이런 차이로 오류가 생긴건 아닌지...

young 님이 쓰신 글 :
: 네..다시 자세하게 말씀드릴게여..
: 음..그러니깐여..
: 채팅 프로그램인데 파일 전송 기능에서
: 4kb씩 읽어서 전송을 하는데여...
:
:     char fileDataBuf[4096] = {0};
:
:     iFileLength = FileSeek(iFileHandle,0,2);
:
:     FileSeek(iFileHandle,0,0);
:
:     iBytesRead = FileRead(iFileHandle, fileDataBuf, 4096);
:
:     send(m_Socket, fileDataBuf, strlen(fileDataBuf), 0);
:
: FileRead 는 파일을 읽을때 바이너리 모드로 읽는 옵션이 없더라구여..
: 그래서 워드 파일 같은 경우 그냥 읽어서 상대편에 전송을 하면 제대로 전송이 안되고 깨지고 그래서
: 위에서 읽어 들인 데이터를 바이너리로 변환을 해서 전송을 하려고 하거든여..
:
:     iBytesRead = FileRead(iFileHandle, fileDataBuf, 4096);
:    
:     <fileDataBuf를 바이너리로 변환 후>
:    
:     //전송
:     send(m_Socket, fileDataBuf, strlen(fileDataBuf), 0);
:
: 이런식으로여...
: 그래서 바이너리로 변환이 필요한테 어떻게 하는지 잘 모르겠어여..
: 아무리 찾아봐도 보이지 않네여...

: 근데 이렇게 하면 워드 파일 같은 경우 제대로 전송이 되나여?
: FileRead에서 바이너리 파일을 어떻게 읽고 쓰죠?
:
:
:
:
: 금목암 님이 쓰신 글 :
: : 파일을 만약 unsigned char나 char로 읽어들이셨으면 해당 버퍼에 문자의 hex값이
: : 있습니다 문제는  intel hex파일이면 해석해야하고 그냥이면 해석할 필요없습니다
: :
: : 보낼때 한자씩 띄어서 보내면 되죠 ..
: : 좀더 자세히 원하는걸 써보세요 그래야 방법도 나오죠

+ -

관련 글 리스트
29689 스트링을 바이너리로 변환하는 방법 알려주세여~ young 2433 2004/05/11
34992     Re:스트링을 바이너리로 변환하는 방법 알려주세여~ 꿈꾸는빛.영준 1532 2004/05/12
29695     Re:스트링을 바이너리로 변환하는 방법 알려주세여~ 금목암 1556 2004/05/12
29696         자세하게 다시 올립니다~~ young 1360 2004/05/12
29710             Re:자세하게 다시 올립니다~~ 금목암 1313 2004/05/13
29706             Re:자세하게 다시 올립니다~~ 방태윤 1309 2004/05/13
29728                 두분다 답변 감사드립니다..^^(냉무) young 976 2004/05/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.