![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Добрый день,
Чем больше работаю с сокетами - тем больше убеждаюсь что я чего-то не понимаю конкретно ![]() функция select принимает параметр - структуру fd_set.
что это? нельзя проверять на события больше 64 сокетов? Это как-то ненормально, в МСДН написано что можно изменить значение FD_SETSIZE перед иклудом - делаю вывод что это нормально - но..на одном форуме прочел что это неправильно, можно найти другое решение, правда не сказано какое..делаю вывод - можно циклом пихать сокеты в fd_set под 64 штуки на итерацию и делать select, но если у меня блокирующий select? Пока первые 64 не выдадут события - на остальных серверу будет наплевать..хмммм, кто что скажет? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 1 Всего: 162 |
Покурил маны, нигде число 64 не увидел.
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
JackYF
В манах я тоже не увидел..это студия - код кроссплатформенный |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
так нету его под виндоуз. Мне нужно кроссплаторменно.. если я сделаю #define FD_SETSIZE 1000 перед инклудом это мне напомнят в судный день? Смертных грех или не очень? |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 1 Всего: 14 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
это кому предназначалось? тому кто маны курил? ![]() 1. маны к мсдн отношения не имеют 2. я сказал что в мсдн нашел, в манах - нет Это сообщение отредактировал(а) azesmcar - 15.4.2009, 08:35 |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Как пишет Р. Стивенс, FD_SETSIZE для большинства юниксподобных систем равно 256.
Простое увеличение через дефайн Стивенс пишет - может не действовать - без перекомпиляции ядра. Он же пишет - что для кросплатформенности не стоит изменять это значение. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Олег2005
Замечательно, добавил проблем на мою голову..а решение??? ![]() Добавлено через 2 минуты и 52 секунды Из МСДН
вот только я тоже прочел что
так что же делать? Изменять только под виндоуз? Не важно, 256 тоже маловато. ![]() |
||||
|
|||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
||||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
т.е. чем я себе эти проблемы создал? тем что программистом стал или что кроссплатформенный код надо писать? ![]()
а которое наименьшее?? мне нужна поддержка обработки ну как минимум 500 сокетов. |
||||
|
|||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Ясно что кроссом.... Для кросса только селект то и подходит - он и там и там есть. Но в винде есть более мощные модели сетевого I/O - а в никсах - увы. Или как-то изголяться с #ifdef windows #endif #ifdef unix #endif Других мыслей нет |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Олег2005
В принципе у меня неблокирующий сокет. Я могу циклом засовывать сокеты в селект по 64 штуки за раз. Как вариант эта методика имеет права на жизнь? Добавлено через 2 минуты и 19 секунд
В никсах есть poll как сказал MAKCim, но...как сказали вы - увы ![]()
![]() |
||||
|
|||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Это понятно
А вот тут я не особенно врубаюсь ![]() Засовывать вы имеет право - FD_SET'ом 64 сокета. И что это даст? Поясните свое предположение - алгоритм в двух словах...... Это сообщение отредактировал(а) Олег2005 - 15.4.2009, 22:49 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Олег2005
Засовываю 64 сокета. Вызываю селект. Есть события, обрабатываю, нет событий - засовываю еще 64, пока не кончатся. Таймаут на селект ставлю 0. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |