파일전송관련 질문합니다.
라별
질문 제목 : 파일전송관련 질문합니다.질문 요약 :바이너리파일 수신시 포맷관련질문 내용 :zip파일을 바이너리로 읽어들여서 서버로 전송을 했습니다.
문제는 수신까지 잘 했는데요
이걸 실행하면 압축이 깨졌다고 나옵니다....
fread로 읽어서 전송후 서버에서 fwrite로 쓸때 무슨 다른 작업을 해줘야 하나요?
음..아무리 생각해도 알수가 없네요...
임시버퍼 생성
임시버퍼에다가 패킷단위로 수신
수신버퍼 뒤에다가 임시버퍼 데이타 추가
임시버퍼 해제
요런식으로 첨부터 끝까지 받아서 다 받으면 fwrite하거든요...
으휴ㅠㅠ
아 파일이름도 클라에서 전송해주는거 그대로 씁니다.
물론 원본파일명과 동일하구요...
메모리 해제도 다 하고
파일도 제대로 닫고있구요..
원인을 알려주세요ㅠ
char *recvdata = (char*)malloc(msg.idatasize); //수신버퍼 메모리 할당
memset(recvdata, null, msg.idatasize);
int itotalbyte = 0;//총 수신 byte
while(1)
{
char *buf = (char*)malloc(packet); //임시버퍼 메모리 할당
memset(buf, null, packet);
irat = recv(clientsocket, buf, packet, 0);//임시버퍼에 수신
if (irat == socket_error)
{
err_display(recv());
continue;
}
else if(irat == 0)
{
err_display(recv());
closesocket(clientsocket);
break;
}
else
{
itotalbyte += irat;
printf([수신중]%d바이트 수신완료 \n, itotalbyte);
strcat(recvdata, buf); //수신버퍼 뒤에 추가하기
free(buf); //임시퍼버 해제
if(itotalbyte = msg.idatasize)
break;
}
}
printf([파일이름]=%s \n, msg.name);
char name[256];
strcpy(name, c:\\);
strcat(name, msg.name);
file *stream = fopen(name, wb);//쓰기모드의 바이너리형태로 파일 오픈
if(stream == null)
{
err_display(fopen());
free(recvdata);
continue;
}
fwrite(recvdata, sizeof(char), msg.idatasize, stream);//파일 쓰기
printf([수신완료]\n);
fclose(stream);
free(recvdata);
-
널위해
그랬군요 감사합니다ㅎ
그럼 저처럼 임시버퍼를 이용해서 대용량 데이터를 받을때는 임시버퍼 - 수신버퍼로 데이터를 어떻게 넘겨야 할까요
수신버퍼 뒤에 계속 붙여야 하는데..흠.. -
MyWay
바이너리 파일을 주고 받을때에는 str~로 시작하는 함수를 사용하지 않아야 됩니다.
파일 중간 중간에 0이 들어있으면 에러가 발생하게 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |