파일전송관련 질문합니다.
라별
질문 제목 : 파일전송관련 질문합니다.질문 요약 :바이너리파일 수신시 포맷관련질문 내용 :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이 들어있으면 에러가 발생하게 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700562 | 함수포인터에서요 (7) | 소심한여자 | 2025-07-06 |
2700530 | 전처리문 질문입니다. (1) | 아놀드 | 2025-07-05 |
2700510 | c언어를 어케하면 잘할수 있을까요.. | 연연두 | 2025-07-05 |
2700484 | 두 개가 차이가 뭔지 알려주세요...(소수 찾는 프로그램) (2) | 날위해 | 2025-07-05 |
2700426 | 인터넷 창 띄우는 질문이요 (1) | 정훈 | 2025-07-04 |
2700400 | 원넓이를 계산이요 ㅜㅜ | 천칭자리 | 2025-07-04 |
2700368 | if에 관해서 질문이요... | Orange | 2025-07-04 |
2700339 | 이거 결과값이 왜이런건지.. (4) | 그댸와나 | 2025-07-04 |
2700313 | 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) | 크나 | 2025-07-03 |
2700287 | 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) | 아련나래 | 2025-07-03 |
2700264 | 문자와 숫자 동시에 입력??? | 글고운 | 2025-07-03 |
2700236 | txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) | 미국녀 | 2025-07-03 |
2700211 | 전위 연산자 (2) | 어른처럼 | 2025-07-02 |
2700183 | C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; | 피스케스 | 2025-07-02 |
2700150 | 꼭좀 도와주세요ㅠㅠㅠ | 호습다 | 2025-07-02 |
2700095 | 연산문제...질문... | 오빤테앵겨 | 2025-07-01 |
2700070 | while문 , 3의배수 출력하는 프로그램좀 짜주세욤. | 횃불 | 2025-07-01 |
2700041 | 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? | 헛장사 | 2025-07-01 |
2700012 | 배열// (1) | 전갈자리 | 2025-07-01 |
2699895 | 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) | 선아 | 2025-06-30 |