Проблема с сокетами

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by VIY_, 7 Dec 2011.

  1. VIY_

    VIY_ New Member

    Joined:
    15 Oct 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    День добрый. Есть такая проблема..

    Клиент должен поддерживать постоянную связь с сервером.

    Сервер отправляет клиенту некие данные с помощью send() порциями, то есть1 сообщение в несколько секунд.

    Клиент должен принимать эти данные с помощью recv() и сохранять в массив. Но беда в том, что recv() не выходит из цикла до тех пор, пока соединение не будет закрыто(что для меня неуместно).

    recv() реализован примерно так(псевдокод):

    Code:
    int result;
    char byte;
    int counter = 0;
    while((result = recv(socket, &byte, 1, 0)) && result != SOCKET_ERROR)
    {
          buffer.push_back(byte);
          counter++;   
    }
    
    return counter;
    send() у сервера:

    Code:
    while(true)
    {
         send(socket, buffer, 1, 0);
         Sleep(100000);
    }
    
    
    Как можно решить проблему?
     
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    решения видится 2: вынесите цикл за пределы функции, или добавление данных в массив добавьте внутрь цикла
    _____________
    P.S. правда я КЭП?