Отправка последовательности данных

Discussion in 'WASM.NETWORKS' started by Sazon, Feb 25, 2007.

  1. Sazon

    Sazon New Member

    Blog Posts:
    0
    Joined:
    Feb 25, 2007
    Messages:
    2
    Серверу нужно отправить последовательность данных из разных буферов, клиенту - принять. Но последовательный вызов send(...) кладет в сокет все данные сразу и клиент получает их все в первый буфер. Сделал так

    Code (Text):
    1. for(i=0; i<numb; i++)
    2. {
    3. send(sock, buf_server[i], strlen(buf_server[i]), 0);
    4. recv(sock, tmp, 3, 0);
    5. }
    6. ~~~~~~~~~~~~~~~~~~~~~~~~
    7. for(i=0; i<numb; i++)
    8. {
    9. recv(sock, buf_client[i], 128, 0);
    10. send(sock, "OK", 2, 0);
    11. }
    но это как-то некрасиво. Можно проще? Порылся в MSDN, но ничего не нашел.
     
  2. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    я бы сделал так же )
     
  3. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    Почему не устраивает принятие всего пакета?

    Отправка последовательности маленьких пакетов сказывается на загруженности сети, так что, скорее всего, тебе нужно пересмотреть дизайн - пусть на низком уровне оно приходит как выгодней системам, а ты уже в прослойке между сокетами и логикой разбирай буфер на свои пакеты и отдавай наверх. То есть, напиши простой протокол, в котором определяй размер пакетов своих данных, введи идентификатор типа данных, если требуется, и т.п.

    P.S. Хотя можно заставить и систему управлять этим, но всё же не рекомендуется.
     
  4. Sazon

    Sazon New Member

    Blog Posts:
    0
    Joined:
    Feb 25, 2007
    Messages:
    2
    Спасибо, теперь принимаю сразу все, а потом разбиваю по нужным буферам.