передача файла с использованием Socket

  • Автор темы Автор темы Funtik
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
F

Funtik

Пишу программу для передачи файлов по сети на VS 2008 с использованием сокетов.
При тестировании на одном компе все нормально, но при передачи по сети происходит потеря данных
Отправку осуществляю с использованием функции send, прием recv.
 
вот прием
dr2=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int ii=bind(dr,(SOCKADDR*)&addrFdr2, sizeof(addrFdr2));
int rr=listen(dr,SOMAXCONN);
int eqr=sizeof(addrFdr2);
sF2=accept( dr2,(SOCKADDR*)&addrFdr,(int FAR *)&eqr);
iResult = recv(sF2,recvbuf,sizeR+256,0);*/
dr2=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int ier=1;
Sleep(5000);
ier=connect(dr2,(SOCKADDR*)&addrFdr2,sizeof(addrFdr2));
char* ruf=new char[1024];
ZeroMemory(ruf,1024);
int nomer_p=0;
//=====================================================
for( nomer_p=0;nomer_p<=(sizeR+256)/1024;nomer_p++)
{
iResult = recv(dr2,ruf,1024,0);
if ( iResult > 0 )
{
for(int k=0;k<1024;k++)
{if(1024*nomer_p+k>sizeR+256){break;}
recvbuf[1024*nomer_p+k]=ruf[k];}
ZeroMemory(ruf,1024);
}
}


closesocket(dr2);

вот отправка
for(nomer=0;nomer<=(size+256)/1024;nomer++)
{
for(int kk=0;kk<1024;kk++)
{ if(nomer*1024+kk>size+256){break;}
RUF[kk]=BUF[nomer*1024+kk];
}

Sleep(1);
send(sF2,RUF,1024,0);ZeroMemory(RUF,1024);}
 
проблему с потерей решил, уменьшив размер отправляемого буфера...вопрос другой теперь...какой максимальны буфер можно кинуть через сокет не опасаясь потери данных???
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!