Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > помогите с сокетами (C++, SSL) |
Автор: pyqt 23.1.2009, 03:46 |
Привет всем! Пишу консольную прогу клиент-сервер (Linux, g++) Клиент подключается к серверу и запрашивает данные. На каждый запрос получает ответ. В итоге необходимо примерно такую функцию: string getResult(string req) { //проверить, если все еще подключен. Если нет - переподключиться, и так бесконечно //отправить request //return ответ } И все это надо завязать на OpenSSL. Сервер должен для каждого соединения создавать поток, который подключается к postgreSQL и вытягивает данные (для каждого потока - свое postgres соединение). Что я уже сделал: Используя библиотеку Sockets (http://www.alhem.net/Sockets/) я наладил клиент-сервер с SSL. Могу делать Send(), получать ответ. Не знаю как там с отдельными потоками на сервере, еще не проверил. Но! Там все event-based, т.е. при OnRead сделать то-то, и т.п. А мне нужно как в PHP fsockopen, подключился, отправил запрос, потом fread (пока не получу данные - жду), и т.п. Подходит ли эта библиотека? Я искал, чтобы проще SSL реализовать, как я понял в стандартной библиотеке это сложно. Как это лучше реализовать? Заранее спасибо за помощь! |
Автор: MAKCim 23.1.2009, 09:25 | ||
не сложно |
Автор: MAKCim 23.1.2009, 16:41 | ||
имхо, нет кроме того, блокирование на read/write и бесконечный цикл это не одно и то же ![]() |
Автор: vinick 23.1.2009, 18:11 | ||||
Я похоже не смог внятно выразить свою мысль ![]() Суть в том что между
и
особой разницы нет. Можно рассматривать вызов onRead как эквивалент возврата из блокированного fread и все дела ![]() pyqt, если очень хочется плюсовой обвязки над сокетами можешь посмотреть на boost.asio, там так же есть поддержка SSL и можно работать с синхронными сокетами, т.е. connect(), потом в read ждешь пока не пришли данные и т.п. Хотя на мой взгляд event-based гораздо удобнее. |
Автор: MAKCim 23.1.2009, 19:17 | ||
а ждать мы onRead как будем? |
Автор: vinick 23.1.2009, 21:09 |
А как мы ждем возврата из блокируемого read ? Тут так же. Скорее всего мы будем спать в каком-нить системном вызове. |
Автор: MAKCim 23.1.2009, 22:21 |
ну и в чем отличие от блокирующей модели тогда? ![]() |
Автор: vinick 23.1.2009, 22:40 |
Принципиальной разницы. как я и говорил - нет. Синхронная и асинхронная модели эквивалентны. |
Автор: MAKCim 23.1.2009, 23:33 |
смелое утверждение...но не верное |
Автор: vinick 23.1.2009, 23:57 |
Обоснование будет? или краткость твоя сестра ? ![]() |
Автор: MAKCim 24.1.2009, 11:28 |
синхронная концепция - запрос с блокировкой в ожидании результата I/O: блокирующий, мультиплексированный асинхронная концепция - запрос без блокировки в ожидании результата I/O: неблокирующий, event-based (например через сигнал), асинхронный при этом в первых двух типах I/O асинхронной концепции нет автоматического вызова примитивов read/write ядром |
Автор: powerfox 26.1.2009, 13:47 |
pyqt, посмотрите на boost Asio. |