앞선 파일 송신에 이어 파일 수신 예제를 살펴보자.
이 코드도 프로토콜이 없는 파일 수신이다.
//수신할 파일을 생성한다.
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('#');
}
서버로부터 데이터를 수신받아 파일에 쓴다
'네트워크' 카테고리의 다른 글
[네트워크] 파일 송신 전용 API ( TransmitFile ) (0) | 2025.04.20 |
---|---|
[네트워크] 파일 송신 개선 (0) | 2025.04.20 |
[네트워크] 파일 송신 (0) | 2025.04.20 |
[네트워크] TCP 장애 유형 (0) | 2025.04.20 |
[네트워크] TCP/IP 연결의 의미 (0) | 2025.04.20 |