![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.08.2011
Сообщений: 102
|
![]()
Прив. Пишу сервер, и он же должен быть асинхронным, потому что это круто и так надо.
С обычными сокетами все ясно, просто вызываешь sent и recv и прога ждет, пока данные отправятся или придут на сокет. Но как быть с асинхронными? Я прочитал, что сама ОС Виндовс построена на событиях. И для полноценного использования всех радостей асинхронных сокетов надо бы создать окошко используя WinMain и привязать к функции-обработчику окна свои методы, которые будут вызываться при поступлении на сокет данных и т.д. Но ведь на сервере окошко не нужно, это меня как-то огорчает. А вот как быть с линуксом? Как там работать с асинхронными сокетами, ведь Линукс - это не Виндовс. Можно ли особо не парясь писать код, который будет работать как на Виндовсе, так и на Линуксе? |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,829
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 30.08.2011
Сообщений: 102
|
![]()
Тогда поясните, что не бред.
Цитата:
Последний раз редактировалось lawliet93; 09.10.2014 в 14:43. Причина: опечаточка |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
И на Windows и на Linux можно использовать select(), но тогда все равно данные читаются как бы синхронно, но для сокетов это не важно, ибо объемы маленькие.
Для Windows есть IOCP. Суть в том, что запускается операция чтения/записи а сигнал приходит по завершении операции. Насколько я знаю, в Linux точного аналога нет. Самое близкое это epoll() но это больше похоже на select() способ - сообщает о наличии данных но само перебрасывание данных происходит синхронно. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 30.08.2011
Сообщений: 102
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
Ну, может и фигня полная, зато можно не парясь писать код, который будет работать как на Виндовсе, так и на Линуксе.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 30.08.2011
Сообщений: 102
|
![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
Ну вы определитесь уже что вам важнее - писать один код под обе платформы или извлекать максимум из каждой.
Если универсальность, тогда select(). Если скорость, тогда IOCP для Windows и epoll() для Linux. |
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 30.08.2011
Сообщений: 102
|
![]() Цитата:
В общем - универсально и максимально полезно! лол |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как "правильно" принимать данные используя асинхронные сокеты? | lawliet93 | C# (си шарп) | 3 | 04.04.2014 13:59 |
Синхронные, асинхронные, блокирующие, неблокирующие сокеты | RuVarez | Win Api | 5 | 23.03.2013 22:47 |
1 и 2 форма. Связь между ними. | Roman1295 | Общие вопросы Delphi | 1 | 02.11.2012 17:15 |
Сокеты: блокируемые или асинхронные? | AndreySt | Win Api | 4 | 14.09.2009 18:43 |
Ноты и интервалы между ними | треч | Помощь студентам | 5 | 01.02.2008 02:39 |