파일전송관련 질문합니다.
라별
질문 제목 : 파일전송관련 질문합니다.질문 요약 :바이너리파일 수신시 포맷관련질문 내용 :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이 들어있으면 에러가 발생하게 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |