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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Асинхронные сокеты , или ... 
V
    Опции темы
REZiaMIX
Дата 9.1.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Пишу сетевую часть одного приложения. 

Начал: Асинхронные сокеты , WSAEventSelect, WSAEnumNetworkEvents и т.д.
Читал давнишние посты Олег2005 о подводных камнях этого способа.

Задумался , почему бы не сделать все таким образом:
Поток на прием , поток на отправку , никаких асинхронных сокетов. А там делай что хочешь , эвенты и т.д.
Если еще выставлять флаг MSG_WAITALL , то можно забыть о проблемах со сборкой пакетов.
Понимаю , все таки будет минус в производительности (но при сегодняшних мощностях это будет почти не ощутимо)

Подтолкните меня в какую-то из сторон - асинхронные сокеты/или 2 потока ???
Спасибо за ответы!


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 5
Всего: 154



асинхронные сокеты, я использую boost::asio, эта библиотека все сильно упрощает
PM MAIL Skype GTalk   Вверх
REZiaMIX
Дата 9.1.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Цитата(Lazin @ 9.1.2009,  12:30)
асинхронные сокеты, я использую boost::asio, эта библиотека все сильно упрощает

Тогда вопрос, что использует boost::asio под win , порты завершения???


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 5
Всего: 154



Цитата(REZiaMIX @  9.1.2009,  12:40 Найти цитируемый пост)
Тогда вопрос, что использует boost::asio под win , порты завершения???

да
PM MAIL Skype GTalk   Вверх
Олег2005
Дата 9.1.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все зависит от числа запросов, приходящих одновременно.
Если их много - то имейте в виду - на каждый поток выделяется 1 мег оперативки под все поточные дела. 
Скажем у вас 500 клиентов - поток отправки + приема*500 мег= 1 гиг.
PM MAIL WWW MSN   Вверх
REZiaMIX
Дата 10.1.2009, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Цитата(Олег2005 @ 9.1.2009,  17:15)
Все зависит от числа запросов, приходящих одновременно.
Если их много - то имейте в виду - на каждый поток выделяется 1 мег оперативки под все поточные дела. 
Скажем у вас 500 клиентов - поток отправки + приема*500 мег= 1 гиг.

Нет , это клиент , выйдет только 2 потока - отправка/прием


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 5
Всего: 154



в случае 2х потоков ты сможешь одновременно отправлять данные только одному клиенту, ну и принимать соотв. то-же
PM MAIL Skype GTalk   Вверх
REZiaMIX
Дата 11.1.2009, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Цитата(Lazin @ 10.1.2009,  10:32)
в случае 2х потоков ты сможешь одновременно отправлять данные только одному клиенту, ну и принимать соотв. то-же

Объясню получше, пишу клиент , канал данных нужен только один 
клиент <---> сервер

Т.е. клиенту нужно работать только с одним сокетом.
Сокет - один , 2 потока.
Поток первый - recv
Поток второй - send

ну и дополнительные прибамбасы)
Но я уже решил использовать boost::asio , так что тему можно закрывать)))


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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