Размер буфера приема данных DEFAULT

Тема в разделе "WASM.NETWORKS", создана пользователем Guest, 5 фев 2006.

  1. Guest

    Guest Guest

    Публикаций:
    0
    Кто нибудь помнит какой размер буфера приема данных для стандартных сокетов? крутится в голове цифра 2048, но я не уверен...
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Может вы хотели узнать это чило :

    #define MAX_PACKET 65535



    sendto за 1 раз может послать буфер размером в ту константу. То есть я думаю это и есть ответ на твой вопрос.
     
  3. Pushkoff

    Pushkoff New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    40
    Адрес:
    Донецк
    по моему размер буфера выставляется в реестре виндовс, у меня стоит 8 кб...



    максимальный размер кадра езернет 1,5 кб...



    а когда мы учили сети, то нам говорили что за раз send посылает не более 500-600 байт...
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ну это за раз отсылка ... а он имел ввиду (если читать что он написал) размер буфера.

    Вообще для TCP размер буфера это размер окна.

    Размер UDP буфера по умолчанию равен около 9 кб для отправки и 40 кб для приема.

    Но все зависит от реализации сокетов.

    В одной книге (Стивенс) еще написано , что размеры буфера TCP должны быть как минимум втрое меньше максимального размера сегмента для соединения.

    В ней кстати довольно подробно описана эта тема.
     
  5. Guest

    Guest Guest

    Публикаций:
    0
    Да, извиняюсь за то что кратко и не понятно спросил...

    Протокол TCP, я считываю recv`ом по 2048 байт
    Код (Text):
    1.  
    2. BUFF_SIZE equ 2048
    3. invoke recv,hSock,addr buffer,BUFF_SIZE,0


    для лучшей производительности меняю параметры сокета с помощью setsockopt (SO_RCVBUF), ставлю BUFF_SIZE

    так вот и хочу узнать какой размер буффера на приеме сокета стоит по умолчанию... если BUFF_SIZE, то не смысла менять параметры сокета...
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ну вот я и говорю .. зависит от реализации (читай предыдущий пост) это помоему параметры BSD реализации. Я бы просто не юзал setsockopt для установки буфера приема. Система выберет по умолчанию сама. И это будет самое оптимальное решение.
     
  7. Puncher

    Puncher New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2005
    Сообщения:
    16
    Адрес:
    Russia
    Можно запросить у самой винды:

    getsockopt,hSock,SOL_SOCKET,SO_RCVBUF,lpbuffout,lpszbuff



    ИЗ MSDN:

    int getsockopt(

    SOCKET s,

    int level,

    int optname,

    char* optval,

    int* optlen

    );



    If no error occurs, getsockopt returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.