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

Тема в разделе "MS Visual C++", создана пользователем Funtik, 5 ноя 2010.

Статус темы:
Закрыта.
  1. Funtik

    Funtik Гость

    Пишу программу для передачи файлов по сети на VS 2008 с использованием сокетов.
    При тестировании на одном компе все нормально, но при передачи по сети происходит потеря данных
    Отправку осуществляю с использованием функции send, прием recv.
     
  2. Funtik

    Funtik Гость

    вот прием
    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);}
     
  3. Funtik

    Funtik Гость

    проблему с потерей решил, уменьшив размер отправляемого буфера...вопрос другой теперь...какой максимальны буфер можно кинуть через сокет не опасаясь потери данных???
     
Загрузка...
Похожие Темы - передача файла использованием
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    498
  2. alekssgor
    Ответов:
    3
    Просмотров:
    3.275
  3. alekssgor
    Ответов:
    5
    Просмотров:
    4.983
  4. sum44
    Ответов:
    2
    Просмотров:
    2.866
  5. Corexis
    Ответов:
    0
    Просмотров:
    87
Статус темы:
Закрыта.

Поделиться этой страницей