![]() |
|
Модераторы: feodorv |
![]()
|
|
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Допустим есть программа серверного типа, к которой подключается много клиентов (от 1 до 10000 например). Вопрос: ведь обработку получения / отправления траффика для каждого пользователя лучше выделять в отдельный поток, или крутить всё тупым while(1)?
Если кидать потоками, то встаёт вопрос: а не попрут ли данные все кучей - вперемешку? Я имею ввиду не системный уровень, а уровень железа. Это сообщение отредактировал(а) Rickert - 21.2.2007, 12:56 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 2 Всего: 91 |
Не попрут. У тебя каждый клиент - отдельный сокет, каждый сокет имеет IP адрес и порт. Поэтому на уровне железа
каждый пакет будет иметь в заголовке адрес и порт назначения. В сети каждый пакет проходит через каждый компьютер, на этом и основываются снифферы. Когда сетевая карта видит, что пакет предназначается этому компу (т.е. его IP адрес), то она автоматически его выцепляет, а остальные игнорирует. Отдельные потоки нужны только для чтения данных из сокетов, т.к. пока нет данных функция чтения как бы подвесает и вешает твою программу, соответственно, если в одном потоке будут читаться данные из нескольких сокетов, то программа зависнет на первом сокете, а по приходу данных уже сможет переключиться на чтение из второго сокета, это не приемлимо. |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Благодарю!
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Всё зависит от программы. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |