소켓 파일 송수신 부분입니다 ㅠㅠ
파일 송신측
...
if((send(s,FileName,256,0)==SOCKET_ERROR))
{
MessageBox(hClient,"파일 이름전송 에러",0,0);
}
fseek(pfile,0,SEEK_END);
파일크기=ftell(pfile);
rewind(pfile);
if((send(s,(char*)&파일크기,sizeof(파일크기),0)==SOCKET_ERROR))
{
MessageBox(hClient,"파일 크기 전송 에러",0,0);
}
while(1)
{
보낼크기=fread(buf,1,4096,pfile);
if(보낼크기>0) {
if((send(s,buf,FileSize,0)==SOCKET_ERROR))
{
MessageBox(hClient,"데이터 전송 에러",0,0);
}
...
수신측
...
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*)&총받을크기,sizeof(총받을크기),0)==SOCKET_ERROR)) {
MessageBox("파일 크기 받기 에러");
break;
}
pfile=fopen(path,"wb");
if(pfile==NULL)
{
MessageBox("파일 열기 에러");
break;
}
while(1)
{
받은크기=(recv(MessageSocket,buffer,4096,0));
if(받은크기==SOCKET_ERROR)
{
MessageBox("파일 데이터 받기 에러");
break;
}
if(받은크기==0)
break;
else
{
fwrite(buffer,1,받은크기,pfile);
if(ferror(pfile))
{
MessageBox("파일 입출력 에러");
break;
}
총받은크기+=받은크기
}
}
fclose(pfile);
if(총받을크기==총받은크기)
{
MessageBox("파일 수신 성공");
}
else
{
MessageBox("파일 수신 실패");
}
WSAAsyncSelect(MessageSocket, m_hWnd, WM_CEVENT,FD_READ | FD_CLOSE);
break;
파일 수신도 안되고 오버 런 어쩌고 뜨네요 ㅠㅠ
질문하시는 글의 요지가 불분명하고 소스 내용이 읽기가
질문하시는 글의 요지가 불분명하고 소스 내용이 읽기가 쉽지 않네요.
사용하신 원본 소스 내용과 컴파일 후, 실행시 어떤 오류가 나타나는지를 올려주시면 좋은 답변이 나올 것 같습니다.
---------------------------------
제일 왼쪽이 저입니다 :)
댓글 달기