Конференция "Сети" » FD_SETSIZE vs сокеты
 
  • kernel © (23.05.10 12:56) [0]
    Доброго времени суток, уважаемые!
    Правильно ли я понимаю, что из-за прописанной в WinSock константы FD_SETSIZE = 64 более 64 потоков подключений с использованием сокетных классов (основанных на TCustomWinSocket) в блокирующем режиме обрабатывать я не смогу?
    И второй вопрос, вытекающий из первого. Как наиболее безболезненно переопределить FD_SETSIZE (например до 1000), чтобы все TCustomWinSocket работали уже с новым значением FD_SETSIZE. Если я просто изменю это значение в WinSock и перекомпилирую последний, думается мне, товарищи "эмбаркадеровцы" на меня обидятся (или лицензия delphi такие махинации позволяет?).
  • DVM © (23.05.10 21:04) [1]

    > Правильно ли я понимаю, что из-за прописанной в WinSock
    > константы FD_SETSIZE = 64 более 64 потоков подключений с
    > использованием сокетных классов (основанных на TCustomWinSocket)
    > в блокирующем режиме обрабатывать я не смогу?

    Я точно могу сказать, что у меня есть и работают программы, в которых более 64 одновременных соединений и режим как раз блокирующий.  FD_SETSIZE  я не переопределял.
  • Slym © (25.05.10 12:53) [2]
    kernel ©   (23.05.10 12:56)
    1. FD_SETSIZE  используется только при вызове select
    2. селеклится в 1 потоке FD_SETSIZE сокетов
    3. потоков может быть больше чем 1 и больше вем 64...
    4. руки проч от генофонда :)
    5. ЦЕЛЬ КАКАЯ?
  • Slym © (25.05.10 12:54) [3]
    Slym ©   (25.05.10 12:53) [2]
    6. можно вообще без select жить и тогда FD_SETSIZE по барабану
  • Григорьев Антон © (25.05.10 13:32) [4]
    FD_SETSIZE влияет только на размер типа TFDSet, который используется в функции select. На количество одновременных подключений он никако не влияет. А TCustomWinSocket и иже с ним работают через AsyncSelect, а не через select, поэтому значение FD_SETSIZE им безразлично.
  • kernel © (25.05.10 16:46) [5]
    Благодарю всех ответивших!

    Т.е., получается, для каждого нового вызова select с новой переменной типа TFDSet (в каждом новом потоке) будет назначено по FD_SETSIZE = 64?
    PS: у меня все равно есть пара мест, где я сам вызываю select (каждый select в новом потоке).


    > 5. ЦЕЛЬ КАКАЯ?

    Не дать обломаться 65-ому клиенту :)
  • Цукор5 (31.05.10 11:46) [6]
    Посмотри книгу "О чем не пишут в книгах о Delphi" там эта тема разжевана. Можно больше 64, но там массив из TFDSet'ов
 
Конференция "Сети" » FD_SETSIZE vs сокеты
Есть новые Нет новых   [134436   +25][b:0][p:0]