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

Тема в разделе "WASM.NETWORKS", создана пользователем Sazon, 25 фев 2007.

  1. Sazon

    Sazon New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2007
    Сообщения:
    2
    Серверу нужно отправить последовательность данных из разных буферов, клиенту - принять. Но последовательный вызов send(...) кладет в сокет все данные сразу и клиент получает их все в первый буфер. Сделал так

    Код (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

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    я бы сделал так же )
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Почему не устраивает принятие всего пакета?

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

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

    Sazon New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2007
    Сообщения:
    2
    Спасибо, теперь принимаю сразу все, а потом разбиваю по нужным буферам.