Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> select fd_set максимальный размер 
:(
    Опции темы
azesmcar
Дата 14.4.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Добрый день,

Чем больше работаю с сокетами - тем больше убеждаюсь что я чего-то не понимаю конкретно smile
функция select принимает параметр - структуру fd_set.

Код

#ifndef FD_SETSIZE
#define FD_SETSIZE      64
#endif /* FD_SETSIZE */

typedef struct fd_set {
        u_int   fd_count;               /* how many are SET? */
        SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
} fd_set;

что это? нельзя проверять на события больше 64 сокетов? Это как-то ненормально, в МСДН написано что можно изменить значение FD_SETSIZE перед иклудом - делаю вывод что это нормально - но..на одном форуме прочел что это неправильно, можно найти другое решение, правда не сказано какое..делаю вывод - можно циклом пихать сокеты в fd_set под 64 штуки на итерацию и делать select, но если у меня блокирующий select? Пока первые 64 не выдадут события - на остальных серверу будет наплевать..хмммм, кто что скажет?

PM   Вверх
JackYF
Дата 14.4.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 1
Всего: 162



Покурил маны, нигде число 64 не увидел.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
azesmcar
Дата 14.4.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



JackYF

В манах я тоже не увидел..это студия - код кроссплатформенный
PM   Вверх
MAKCim
Дата 14.4.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Цитата(azesmcar @  14.4.2009,  11:46 Найти цитируемый пост)
Это как-то ненормально

вполне нормально

хочешь больше - юзай poll


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
azesmcar
Дата 14.4.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата

хочешь больше - юзай poll 

так нету его под виндоуз. Мне нужно кроссплаторменно..
если я сделаю 
#define FD_SETSIZE      1000
перед инклудом это мне напомнят в судный день? Смертных грех или не очень?
PM   Вверх
J0ker
Дата 15.4.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



курите тщательней
http://support.microsoft.com/kb/111855


--------------------
user posted image
PM MAIL   Вверх
azesmcar
Дата 15.4.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата

курите тщательней

это кому предназначалось? тому кто маны курил? smile
1. маны к мсдн отношения не имеют
2. я сказал что в мсдн нашел, в манах - нет



Это сообщение отредактировал(а) azesmcar - 15.4.2009, 08:35
PM   Вверх
Олег2005
Дата 15.4.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Как пишет Р. Стивенс, FD_SETSIZE для большинства юниксподобных систем равно 256.
Простое увеличение через дефайн Стивенс пишет - может не действовать - без перекомпиляции ядра.
Он же пишет - что для кросплатформенности не стоит изменять это значение.
PM MAIL WWW MSN   Вверх
azesmcar
Дата 15.4.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Олег2005

Замечательно, добавил проблем на мою голову..а решение??? smile

Добавлено через 2 минуты и 52 секунды
Из МСДН
Цитата

Four macros are defined in the header file Winsock2.h for manipulating and checking the descriptor sets. The variable FD_SETSIZE determines the maximum number of descriptors in a set. (The default value of FD_SETSIZE is 64, which can be modified by defining FD_SETSIZE to another value before including Winsock2.h.

вот только я тоже прочел что
Цитата

для кросплатформенности не стоит изменять это значение

так что же делать? Изменять только под виндоуз? Не важно, 256 тоже маловато.
 smile 
PM   Вверх
Олег2005
Дата 15.4.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(azesmcar @  15.4.2009,  12:14 Найти цитируемый пост)
Замечательно, добавил проблем на мою голову..а решение???

Сами эти проблемы высыпали себе на голову.......
А решение? Из двух(трех) зол - выбирать наименьшее.
Увы, всем угодить не получается....
PM MAIL WWW MSN   Вверх
azesmcar
Дата 15.4.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата

Сами эти проблемы высыпали себе на голову.......

т.е. чем я себе эти проблемы создал? тем что программистом стал или что кроссплатформенный код надо писать? smile
Цитата

А решение? Из двух(трех) зол - выбирать наименьшее.

а которое наименьшее?? мне нужна поддержка обработки ну как минимум 500 сокетов. 
PM   Вверх
Олег2005
Дата 15.4.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(azesmcar @  15.4.2009,  12:38 Найти цитируемый пост)
т.е. чем я себе эти проблемы создал? тем что программистом стал или что кроссплатформенный код надо писать?

Ясно что кроссом....
Для кросса только селект то и подходит - он и там и там есть.
Но в винде есть более мощные модели сетевого I/O - а в никсах - увы.
Или как-то изголяться с
#ifdef windows

#endif 

#ifdef unix

#endif 
Других мыслей нет
PM MAIL WWW MSN   Вверх
azesmcar
Дата 15.4.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Олег2005

В принципе у меня неблокирующий сокет. Я могу циклом засовывать сокеты в селект по 64 штуки за раз. Как вариант эта методика имеет права на жизнь?

Добавлено через 2 минуты и 19 секунд
Цитата

Но в винде есть более мощные модели сетевого I/O - а в никсах - увы.

В никсах есть poll как сказал MAKCim, но...как сказали вы - увы smile 
Цитата

Ясно что кроссом....

 smile таковы требования, ничего не поделать.

PM   Вверх
Олег2005
Дата 15.4.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(azesmcar @  15.4.2009,  21:28 Найти цитируемый пост)
В принципе у меня неблокирующий сокет. 

Это понятно

Цитата(azesmcar @  15.4.2009,  21:28 Найти цитируемый пост)
Я могу циклом засовывать сокеты в селект по 64 штуки за раз. Как вариант эта методика имеет права на жизнь?

А вот тут я не особенно врубаюсь smile 
Засовывать вы имеет право - FD_SET'ом 64 сокета.
И что это даст?
Поясните свое предположение - алгоритм в двух словах......


Это сообщение отредактировал(а) Олег2005 - 15.4.2009, 22:49
PM MAIL WWW MSN   Вверх
azesmcar
Дата 15.4.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Олег2005

Засовываю 64 сокета. Вызываю селект. Есть события, обрабатываю, нет событий - засовываю еще 64, пока не кончатся. Таймаут на селект ставлю 0.
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1232 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.