![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Здравствуйте. У меня появилась задача реализовать клиент-серверное приложение. Оно должно выполнять функцию удалённой консоли. Так вот, я это реализовал через сокеты, а данные из консоли на стороне сервера получал по пайпам. В целом программа работает, но с ошибками. Поэтому решил переписать заново, но с возможностью подключения множества клиентов.
Можете подсказать каким образом лучше это реализовать? Что посмотреть? Может есть какие-то библиотеки, с помощью которых лучше это реализовать? |
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Как раз тоже делаю Клиент сервер.
В аттаче DLL в которой реализован сервер с возможностью подключения до 100 клиентов. Коменнты я писал везде где надо, так что думаю разберётесь. Присоединённый файл ( Кол-во скачиваний: 9 )
Dll___________________________.7z 3,26 Kb--------------------
воин dzen'a |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Спасибо, гляну. А вы это на Qt пишете?
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Нет.На QT в данном случае реализованно только обеспечение представления функций в таблице импорта DLL.
А юольше там нигде QT нет. Можете спокойно поместить в любой другой сишный проект DLL. --------------------
воин dzen'a |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Это хорошо. Но мне хотелось бы для общего развития ещё инфу какую-нить почитать. Можете что-нибудь посоветовать?
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
На счёт почитать ничего особого порекмендовать не могу.
В общем смысл такой: Делаешь основную нитку. Из неё запускаешь нить которая обеспечивает Accept соединения и заносит сокет полученный в результате accept в массив под определённым номером.В том примере который я привёл за номерами элеметов массива сокетов в который вносится значение нового сокета следит структура admirer_WARA. admirer_WARA.GetID()-возвращает под каким номером записать сокет в общий массив сокетов клиентов. admirer_WARA.DelID(int i)-удаляет сокет из общего массива . В ней задаёться максимальное количество клиентов, которое равно количеству элементов массива сокетов клиентов. Из нитки Accept , при удачном подкключении создаёшь нитку приёма сообщений от конкретного клиента передовая при создании поток номер клиента. Ну собственно общий смысл такой. --------------------
воин dzen'a |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Я бы конечно и сам разобрался, но так быстрее
Это сообщение отредактировал(а) vadimp56 - 18.2.2011, 22:39 |
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
--------------------
воин dzen'a |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Вот ещё есть вопрос: можно ли такое реализовать без создания дополнительных потоков?
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Не знаю....
А зачем этого избегать. Если конечно у Вас тысячи клиентов..... Если честно,не пробовал. Это сообщение отредактировал(а) hawk3500 - 18.2.2011, 23:12 --------------------
воин dzen'a |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
Возможно и есть другое решение, но я пока тоже ничего, кроме новых потоков, не вижу. Ещё раз спасибо за книгу и код.
Тема закрыта. |
|||
|
||||
| миг |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
Есть такая книжка Михаил Фленов "Программирование на С++ глазами хакера" Издательство "БХВ-Петербург" 2004 год. Там есть пример написание клиента и сервера. Это сообщение отредактировал(а) миг - 19.2.2011, 14:19 --------------------
Oaks may fall when reeds stand the storm. |
||||
|
|||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
в целом сам способ не правилен, какие пайпы?
запускаем hiden cmd.exe и перенаправляем на сокет все с консоли -------------------- |
|||
|
||||
| vadimp56 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.4.2010 Где: Москва Репутация: нет Всего: нет |
А можно поподробнее что это?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |