ㅠㅠ 다시 질문 올립니다.. ㅠ

dalvik의 이미지

수신 쪽에서 파일 요청 하면 송신쪽에서 파일 보내는 거 짜고 있습니다

송신쪽 입니다.
...(생략)
case WM_SEVENT :
SEvent(wParam, lParam);

...(생략)

WSAAsyncSelect(s, hClient, WM_SEVENT, FD_READ | FD_WRITE | FD_CLOSE);

...(생략)

void SEvent(WPARAM wParam, LPARAM lParam)
{

switch(WSAGETSELECTEVENT(lParam)){
case FD_READ :
Read();
break;
...(생략)

void Read()
{

...(생략)

hThread = CreateThread(NULL, 0, SendFile, NULL, 0, NULL);

...(생략)
}

DWORD WINAPI SendFile(LPVOID arg)
{
...(생략)

if((pfile=fopen(FilePath,"rb"))==NULL)
{
MessageBox(hClient,"전송할 파일열기 에러",0,0);
return 1;
}

if((send(s,FileName,256,0)==SOCKET_ERROR))
{
MessageBox(hClient,"파일 이름전송 에러",0,0);
}


fseek(pfile,0,SEEK_END);
TotalSize=ftell(pfile);
rewind(pfile);

if((send(s,(char*)&TotalSize,sizeof(TotalSize),0)==SOCKET_ERROR))
{
MessageBox(hClient,"파일 크기 전송 에러",0,0);
return 1;
}

while(1)
{
FileSize=fread(buf,1,4096,pfile);
if(FileSize>0)
{
sentSize=send(s,buf+sentSize,FileSize-sentSize,0);

if(sentSize==SOCKET_ERROR)
{
MessageBox(hClient,"데이터 전송 에러",0,0);
break;
}
TotalFileSize += FileSize;

}
else if(FileSize == 0 && TotalFileSize == TotalSize) break;
}
fclose(pfile);

}

수신쪽

...(생략)

switch(WSAGETSELECTEVENT(lParam))
{
case FD_READ :
WSAAsyncSelect(MessageSocket, m_hWnd, WM_CEVENT,FD_CLOSE);

if((recv(MessageSocket,FileName,256,0)==SOCKET_ERROR))//파일 이름 받는부분
{
MessageBox(FileName);
MessageBox("파일 이름 받기 에러");

break;
}
sprintf(path,"d:\\%s%s",inet_ntoa(addr.sin_addr),FileName);


if((recv(MessageSocket,(char*)&FileSize,sizeof(FileSize),0)==SOCKET_ERROR)) //파일 크기 받는 부분
{
MessageBox("파일 크기 받기 에러");
break;
}
pfile=fopen(path,"wb");//파일 여는 부분
if(pfile==NULL)
{
MessageBox("파일 열기 에러");
break;
}


while(TotalRecvSize<=FileSize)
{
RecvSize=(recv(MessageSocket,buffer+RecvSize,4096-RecvSize,0));

if(RecvSize==SOCKET_ERROR)
{
MessageBox("파일 데이터 받기 에러");
break;
}
else
{
fwrite(buffer,1,RecvSize,pfile);
if(ferror(pfile))
{
MessageBox("파일 입출력 에러");
break;
}
TotalRecvSize+=RecvSize;
}

}

fclose(pfile);
if(FileSize==TotalRecvSize)
{
MessageBox("파일 수신 성공");
}
else
{
MessageBox("파일 수신 실패");
}

WSAAsyncSelect(MessageSocket, m_hWnd, WM_CEVENT,FD_READ | FD_CLOSE);
break;

24KB까지 밖에 안받아지네요 ㅠㅠㅠ

한번에 보내는 랜덤이라고 만큼 받도록 계속 루프 돌려야 된다는데

while(TotalRecvSize<=FileSize) 부분이 그 부분이 아닌가요?ㅠㅠ