앞서 살펴본 파일 송신에서 데이터를 보낼 때, 데이터의 크기만큼 실제로 데이터가 갔는지 확인하는 코드가 존재하지 않는다.
인터넷 환경은 기본적으로 불안정하기 때문에 데이터가 실제로 갔는지 확인하는 코드가 반드시 필요하다.
파일 송신 서버
// 파일 전송 (부분 전송 처리)
char byBuffer[65536]; // 64KB 버퍼
int nRead, nSent, i = 0;
while ((nRead = fread(byBuffer, sizeof(char), sizeof(byBuffer), fp)) > 0)
{
int nTotalSent = 0;
while (nTotalSent < nRead)
{
nSent = send(hClient, byBuffer + nTotalSent, nRead - nTotalSent, 0);
if (nSent == SOCKET_ERROR)
{
ErrorHandler("데이터 전송 중 오류가 발생했습니다.");
}
nTotalSent += nSent;
printf("[%04d] 전송된 데이터 크기: %d / 누적: %d\n", ++i, nSent, nTotalSent);
fflush(stdout);
}
}
파일을 송신한다.
송신을 했는데 실제 송신한 데이터가 읽어온 데이터보다 작을 경우 그 차이만큼 다시 전송한다.
'네트워크' 카테고리의 다른 글
[네트워크] 파일 수신 ( TransmitFile ) (0) | 2025.04.21 |
---|---|
[네트워크] 파일 송신 전용 API ( TransmitFile ) (0) | 2025.04.20 |
[네트워크] 파일 수신 (0) | 2025.04.20 |
[네트워크] 파일 송신 (0) | 2025.04.20 |
[네트워크] TCP 장애 유형 (0) | 2025.04.20 |