Макс.возможное количество открытых сокетов в Windows

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by raven1992, 1 Apr 2012.

  1. raven1992

    raven1992 New Member

    Joined:
    6 Oct 2011
    Messages:
    56
    Likes Received:
    3
    Reputations:
    0
    Ситуация следующая:
    Под Windows XP на любом ПК что я тестил, не зависимо от его комплектации (хоть hi-end система, хоть самый дешевый нетбук) удаётся открыть одномременно максимум ~3950 соединений (про дефолтный лимит в 10 соединений забудем), после чего ф-ция connect начинает возвращать
    Code:
    10055 No buffer space available. 
    An operation on a socket could not be performed because the system lacked 
    sufficient buffer space or because a queue was full.
    При достижении данного ограничения новый сокет в Windows XP не может создать вообще никакая программа.


    Прошу подсказать:
    как на windows системе (не обязательно XP) одновременно открыть более 4к соединений?

    гугл помогать отказывается. http://support.microsoft.com/kb/111855/ru - объясняет не многое.
     
    #1 raven1992, 1 Apr 2012
    Last edited: 1 Apr 2012
  2. IGL

    IGL New Member

    Joined:
    16 Nov 2007
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    1 вопрос... нафига ??
     
  3. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    ддос :eek:
     
  4. panda gorl

    panda gorl New Member

    Joined:
    19 Mar 2007
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    почитай про overlapped/completion-сокеты, может помочь
     
  5. DYUMON

    DYUMON New Member

    Joined:
    15 Sep 2010
    Messages:
    68
    Likes Received:
    2
    Reputations:
    0
    скачай Half-open limit fix и поставь сколько надо
     
  6. raven1992

    raven1992 New Member

    Joined:
    6 Oct 2011
    Messages:
    56
    Likes Received:
    3
    Reputations:
    0
    overlapped порты возможно помогли бы, если бы комп отправляющий запросы не успевал бы освобождать сокеты. У меня успевал, но в любом случае проверил на практике. Количество запросов в минуту не возрастает.

    значение half-open-poprts у меня и так стояло 65к, иначе я бы не открыл и 1к сокетов.

    Ну а вообще, удивлён что никто не знал ответа. Решение нашел в манах, сам, но публиковать его, раз оно такое секретное и никто не посчитал нужным делиться - не буду.
    Скажу лишь "учите TCP\IP". Рано или поздно, как и я, вы его найдете. Да и вообще в голове кроме опилок и мыслей про ддосеры что-нибудь более полезное появится.
     
  7. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Бред - посто написан повыёбываться.
     
    1 person likes this.
  8. raven1992

    raven1992 New Member

    Joined:
    6 Oct 2011
    Messages:
    56
    Likes Received:
    3
    Reputations:
    0
    [​IMG]

    мой предыдущий пост был создан скорее, чтобы упрекнуть.
    И тех, кто пожадничал, и тех, кто не знал.

    Но если кому-то и правда потребуется решить подобную моей проблему - не важно, для написания какого именно софта - пусть читает ру.вики, подряд все разделы&подазделы, посвященные TCP\IP. Там это есть.
     
  9. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Цифры цифрами - вопрос в другом: Сколькими реально одновременно воспользоваться?
     
  10. raven1992

    raven1992 New Member

    Joined:
    6 Oct 2011
    Messages:
    56
    Likes Received:
    3
    Reputations:
    0
    Установив патч для снятия лимита полуоткрытых портов можно одновременно открыть не более 4к сокетов, потом пишет что в системе кончилась буфферная память.
    Если эту проблему решить - на одной машине под win можно создавать до 64к одновременных соединений. Теоретически.
    Практически - упрешься либо в лимит, зависящий от настроек\оборудования твоего провайдера, либо в процессорную мощность.

    А на линуксе и по дефолту можно создавать что-то около 20к соединений.

    upd
    а если ты имел ввиду, сколькими из 6400 соединений на скрине "пользовалась" моя программа, то ответ - всеми. Это вовсе не ддосер, и работает он в 6к сокетов так же корректно, как до этого работал в 4к.
     
    #10 raven1992, 26 Jun 2012
    Last edited: 26 Jun 2012