![]() |
|
Модераторы: xvr |
![]()
|
|
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
ну просто у меня есть несколько клиентов, recvfrom о котором я писал выше нужен чтобы установить соединение, после этого сервер должен отправить всем подключенным клиентам сообщение(скорее всего широковещательное), дальше клиенты отвечают, мне нужно определить кто первым ответил, для этого я и хочу использовать select.
ЗЫ: когда я отправляю бродкаст он на мой комп не приходит?Можноли как-нибудь сделать чтобы приходило? Если нет, то не понятно как тестить... Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 03:40 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
через select() ты никак не определишь, кто ответил первым нет раскидать клиентов по разным портам и работать через loopback-интерфейс Добавлено через 33 секунды а вообще не мешало бы услышать задачу полностью что на входе, что на выходе -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Задача такая: есть бабушка(сервер) которая кидает зерна, и n воробьев, которые хотят их схватить(клиенты), если воробей схватил зерно, то следующий розыгрыш он пропускает.
Сначала я реализовал через потоки, но преп сказал что если он захочет запустить 1000 клиентов то столько потоков не создастся, и посоветовал делать через бродкаст всё в одном потоке. потомучто когда выполниться селект уже может прийти несколько ответов? А как тогда определить кто первый?
а это как? Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 11:14 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
4eJIoBekMoJIekyJIa,
где конкретно будут располагаться клиенты? (хост, LAN, глобальная сеть) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
все на одном компе
Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 12:12 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
4eJIoBekMoJIekyJIa,
1. что мешает вызывать recvfrom() до получения ответов ото всех клиентов? первый вызов recvfrom() будет соответствовать первому ответившему клиенту 2. на хосте широковещательную (и многоадресную) передачу организовать нельзя -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Ладно. А одновременно отправить как-нибудь подругому можно?
Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 12:34 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
нет, т. к в рамках хоста все клиенты будут "сидеть" на разных портах -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
слушай смотри если есть такой код
и у меня на сервере вызывается
какой порт занесется в cl_addr? или там будет пусто?
насколько я понимаю лупбэк интерфейс какбы создает новый сетевой интерфейс, а как его создать? Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 18:52 --------------------
|
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
порт клиента (назначается динамически в момент отправки пакета клиентом)
не понял вопроса loopback - виртуальный сетевой интнрфейс (не соответствет никакому NIC) создавать ничего не надо, он является частью сетевой подсистемы ядра доступен через символьный идентификатор lo -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
не понял как это...объясни пожалуйста Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 27.5.2008, 21:25 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
делать bind() на сокетах клиентов (или ничего не делать: порт назначит ядро) все пакеты отсылать на 127.0.0.1 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Если просто выслать на 127.0.0.1 онж не перешлется всем сокетам клиентам. --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
клиенты отсылают пакеты серверу на 127.0.0.1 сервер отсылает пакеты клиентам на 127.0.0.1 с указанием портов клиентов (из cl_addr) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
ну в моей задаче такое не катит(сервер ведь будет поочереди отсылать на каждый порт),а мне нужно чтобы всем клиентам приходило одновременно... смотри а если я буду биндить клиенты на 127.0.0.2 127.0.0.3 итд и отправлять бродкаст на 127.0.0.255 они его получат? --------------------
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под 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. |