![]() |
|
Модераторы: xvr |
![]()
|
|
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
Такая ситуация:
и есть две ситуации : 1. код срабатывает когда другая програма делает conect к этой проге 2. код срабатывает когда другая прога не делает конекта к этой проге в обоих случаях макрос FD_ISSET(sock,&rfds) возвращает ноль т.е. в сокет возможно чтение как я понимаю макрос FD_ISSET(sock,&rfds) должен возвращать ноль в том случае конда к сокету идет conect с другого сетевого интерфейса ... или я в чем то не прав? т.е. как написано в этом доке тут : readfds: если сокет находится в режиме прослушивания и пришел запрос на соединение, функция accept будет выполнена успешно. данные доступны для чтения (включая данные OOB, если SO_OOBINLINE включена). соединение было закрыто/прервано. Добавлено @ 07:04 промучался пол ночи так и не понял ) пошел спать, буду ждать вашей помощи :-) спасибо заранее) Это сообщение отредактировал(а) tempman - 17.12.2006, 07:03 |
|||
|
||||
| GrayCardinal |
|
||||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Ну, правильно написано FD_ISSET на то и "IS SET", чтоб возвращать true, когда есть что-то для данного дескриптора. Т.е когда вы делаете несколько FD_SET, то после "select" надо каждый проверять - какой сработал (FD_ISSET) ? (либо "!" убери перед FD_ISSET либо комменты поменяй на ротивоположные по смыслу) И надо не забыть переустановить дескрипторы перед повторным вызовом... Добавлено @ 08:28
Ага ? Замени select (1, &rfds, NULL,NULL, &onesec) на select(sock+1, &rfds,NULL,NULL, &onesec) Хитрая грабля. Сам ходил Добавлено @ 08:33 P.S> Это *nix, тут все работает так как надо, а не так как хочется Это сообщение отредактировал(а) GrayCardinal - 17.12.2006, 08:29 |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
не, это чистейший man -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Ну, это уже после грабли и с шышкой |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
ха, а как ты ее без man-а то в первый раз использовал? по такому прототипу
хз, что такое n или по интуиции? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
По логике вообще-то |
|||
|
||||
| tempman |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
как же так , читал в каком то мане/доке :-) что макрос FD_ISSET возвращает ноль если дескриптр находится в проверяемом наборе ... следовательно и не ноль если не находится ...может конечно читал очень поздно и что то не так прочитал ... .... так прочитал только что еще раз док на который ссылаюсь ,похоже меня кто то жестоко обманул :-) FD_ISSET возвращает НЕ ноль если дескриптор находится в наборе после селекта :-) но я 100% помню что в каком то русском "типа мане" в нете было написано наоборот :-(( проехали , идем дальше
а подробнее? у меня селект как селект так и FD_ISSET вызывается всего один раз за прогу при иницилизации :-)
Блин , точно в мане написано , читать надо было внимательноее ... сч а внесус коррективы скажу :-) Добавлено @ 14:26
ступил , ступил :-) в примере в мане рассматривается декриптр стдина который =0 :-) вот там то и стоит еденица в селекте ) ну я и взял не подумав :-))) Добавлено @ 14:30 супер !!! все работает :-)) всем спасибо буду сюда еще писать если траблы какие будут , буду надеяться на такую же помощь Это сообщение отредактировал(а) tempman - 17.12.2006, 14:32 |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |