간단한 파일 송신 예제를 살펴보자.
프로토콜이 없는 파일 송신이다.
//전송할 파일 개방
FILE *fp = NULL;
errno_t nResult = fopen_s(&fp, "Sleep Away.zip", "rb");
if (nResult != 0)
ErrorHandler("전송할 파일을 개방할 수 없습니다.");
전송할 파일을 연다.
//파일송신
char byBuffer[65536]; //64KB
int nRead, nSent, i = 0;
while ((nRead = fread(byBuffer, sizeof(char), 65536, fp)) > 0)
{
//파일에서 읽고 소켓으로 전송한다.
//전송에 성공하더라도 nRead와 nSent 값은 다를 수 있다!!!
nSent = send(hClient, byBuffer, nRead, 0);
printf("[%04d] 전송된 데이터 크기: %d\n", ++i, nSent);
fflush(stdout);
}
함수 호출을 덜하고 송신 자체를 적게 하므로 파일을 송신할때 송신하는 크기는 클수록 보통 좋다.
위 코드에서는 64KB 만큼 송신하지만, 어느정도가 적당한지는 실제로 용량을 바꾸면서 직접 알아내야한다.
'네트워크' 카테고리의 다른 글
[네트워크] 파일 송신 개선 (0) | 2025.04.20 |
---|---|
[네트워크] 파일 수신 (0) | 2025.04.20 |
[네트워크] TCP 장애 유형 (0) | 2025.04.20 |
[네트워크] TCP/IP 연결의 의미 (0) | 2025.04.20 |
[네트워크] select (0) | 2025.04.17 |