앞선 파일 송신에 이어 파일 수신 예제를 살펴보자.

이 코드도 프로토콜이 없는 파일 수신이다.

 

//수신할 파일을 생성한다.
puts("*** 파일 수신을 시작합니다. ***");
FILE *fp = NULL;
errno_t nResult = fopen_s(&fp, "Sleep away.zip", "wb");
if (nResult != 0)
	ErrorHandler("파일을 생성 할 수 없습니다.");

 

수신할 파일을 생성한다. .zip로 생성했는데, zip 파일로 생성하고 압축을 풀면 crc체크로 오류를 체크해주기 때문에 테스트 하기에 딱이다. 정석대로 하려면 MD5라는 해시 알고리즘을 사용해서 무결성을 체크해줘야한다.

 

//서버가 전송하는 데이터를 반복해 파일에 붙여 넣는다.
char byBuffer[65536];		//64KB
int nRecv;
while ((nRecv = ::recv(hSocket, byBuffer, 65536, 0)) > 0)
{
	//서버에서 받은 크기만큼 데이터를 파일에 쓴다.
	fwrite(byBuffer, nRecv, 1, fp);
	putchar('#');
}

 

서버로부터 데이터를 수신받아 파일에 쓴다

+ Recent posts