Здравствуйте, abrec, Вы писали:
A>Привет! A>Зачем ОНО????
Быстро написать сервер. Из примера:
1) Наследуем наш сервер от базового класса
class HttpServer: public doronix::TcpServer
{
public:
HttpServer(const std::string &documentRoot, bool useAsyncFiles, int bufferSize, int threadCount = 0);
doronix::Client *createClient(doronix::TcpSocket *socket) override;
private:
std::string _documentRoot;
bool _useAsyncFiles;
};
2) Переопределяем функцию createClient, где мы вернем нашего клиента отнаследанного от базового класса.
Каждый раз когда пришло подключение — вызывается эта функция
3) Пишем клиента. Надо отнаследовать наш клиент от класса doronix::Client и переопределить 2 метода — readFromClient, writeToClient
Когда мы читаем и приходят данные — вызывается readFromClient, а когда мы перевели клиента в пишущий режим вызвав setWriting,
вызывается writeToClient чтобы послать данные клиенту.
Начальный стейт (читаем или пишем) вы выставляем в сервере. Меняем методами setReading/setWriting. Возможно поставить чтение
на паузу вызвав suspendWriting/resumeWriting.
В папке examples есть 2 примера — http сервер и чат. Библиотека асинхронная, многопоточная с поддержкой SSL, и возможностью асинхронно/синхронно послать файл.
Все очень быстро.
class HttpClient: public doronix::Client
{
public:
HttpClient();
~HttpClient();
int readFromClient(const char *buffer, int size) override;
int writeToClient(char *buffer, int size) override;
void setDocumentRoot(const std::string &documentRoot);
void setUseAsyncFiles(bool useAsyncFiles);
private:
bool _headerSent = false;
doronix::File *_file = 0;
std::string _buffer;
std::string _documentRoot;
bool _useAsyncFiles = true;
};
Здравствуйте, abrec, Вы писали:
A>Здравствуйте, _facelift, Вы писали:
_>>Быстро написать сервер. Из примера:
A>Зачем эти лисапеды? Зачем писать сервер быстро?
Предположим работодателю нужен сервер. Он нанимает программиста. И тот полгода чета пишет. И тут возникают варианты
1) А ему надоело и он увольняется. Есть нерабочий код, что с ним делать не понятно
2) Он не смог и увольняется. В итоге у тебя опять куча какого-то кода
3) Он таки написал. Но чета как-то не очень — медленно и баги.
4) Все ОК
Т.е. исход не ясен. Могут написать а могут и не написать или написать плохо
Что имеем. Предположим зарплата программиста этого 80 тысяч рублей в месяц. И за полгода на сервер потрачено
6 * 80 = 480 тысяч рублей. Это по курсу 60 рублей за доллар 8 тысяч долларов. Многовато как-то. Здесь же у нас
за 500 баксов готовая библиотека. Все есть — надо только логику под себя написать. Экономишь $7500 и полгода,
которые еще не известно как завершаться.
Re[3]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
_>Предположим работодателю нужен сервер. Он нанимает программиста. И тот полгода чета пишет. И тут возникают варианты
_>1) А ему надоело и он увольняется. Есть нерабочий код, что с ним делать не понятно _>2) Он не смог и увольняется. В итоге у тебя опять куча какого-то кода _>3) Он таки написал. Но чета как-то не очень — медленно и баги. _>4) Все ОК
_>Т.е. исход не ясен. Могут написать а могут и не написать или написать плохо
_>Что имеем. Предположим зарплата программиста этого 80 тысяч рублей в месяц. И за полгода на сервер потрачено _>6 * 80 = 480 тысяч рублей. Это по курсу 60 рублей за доллар 8 тысяч долларов. Многовато как-то. Здесь же у нас _>за 500 баксов готовая библиотека. Все есть — надо только логику под себя написать. Экономишь $7500 и полгода, _>которые еще не известно как завершаться.
Если программист, которого наняли писать сервер, причем на с++, не знаком с сокетами, фрэймворками типа boost::asio, zmq, возможно в скором времени std::asio,
то ему, для написания, качественного сервера, ваша библиотека не поможет.
Если жэ знаком, то она для него бесполезна.
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Здравствуйте, _facelift, Вы писали:
_>Спорно. В asio нет ни потоков, ни SSL. Все это надо самому прикручивать, а это время.
Советую перечитать документацию.
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
Здравствуйте, Kernan, Вы писали:
K>Здравствуйте, _facelift, Вы писали:
_>>Всем привет. Зацените библиотеку.
_>>http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl _>>http://www.doronix.com/doronix-network
_>>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая. K>Это всё есть в ASIO. Боле того, для чего-то серьёзного лучше выбрать тот же ACE чем это и тем более ОНО ЗА ДЕНЬГИ ЧТО ЛИ?! _>>Что думаете про нее? K>Не нужна (с).
Дык не дорого же. Но моя же проще? Быстрее же написать можно.
Re[3]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Реклама своих коммерческих продуктов на этом форуме не поощряется. И правильно, в общем-то, что не поощряется.
Что до вашей библиотеки, то... "я могу печтатать со скоростью 1000 знаков в минуту! Но такая фигня получается". (С)
Завязываться на неизвестно чью библиотеку, неизвестно как поддерживаемую, с неизвестными условиями багфиксов. На это не пойдет ни один вменяемый менеджер. Поэтому моя рекомендация такова: публикуйте ее как open source и продвигайте как только можете. Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Здравствуйте, SkyDance, Вы писали:
_>> Но моя же проще? Быстрее же написать можно.
SD>Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.
А как можно заработать на своей известности в этом случае? Ну или как вообще можно заработать на open source библиотеке?
Re[5]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
_>А как можно заработать на своей известности в этом случае?
Очень просто: вас с руками оторвут большие компании. Архитектором или программистом за большие деньги.
_>Ну или как вообще можно заработать на open source библиотеке?
...а вот в sales или менеджмент не возьмут.
Re[6]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Здравствуйте, SkyDance, Вы писали:
_>>А как можно заработать на своей известности в этом случае?
SD>Очень просто: вас с руками оторвут большие компании. Архитектором или программистом за большие деньги.
_>>Ну или как вообще можно заработать на open source библиотеке?
SD>...а вот в sales или менеджмент не возьмут.
Спасибо. Буду думать.
Re[5]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Здравствуйте, _facelift, Вы писали:
_>Здравствуйте, SkyDance, Вы писали:
_>>> Но моя же проще? Быстрее же написать можно.
SD>>Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.
_>А как можно заработать на своей известности в этом случае? Ну или как вообще можно заработать на open source библиотеке?
Саппорт, добавление новых фич.
Sic luceat lux!
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.
Для того чтобы утверждать что бибилотека работает быстро, нужно показать какие-нибудь тесты. Может для тебя 10000 сообщений в сек. это уже быстро. Ну и "быстро" разное бывает.
_>Что думаете про нее?
Ничего не думаю. За деньги и без доступа к исходным кодам такая вещь никому точно нужна не будет. Чем это лучше asio или poco? Правильный ответ, скорее всего, ничем не лучше, а наоборот хуже, с кучей багов, открытого трекера нет, соответственно посмотреть историю исправления багов мы не можем, оценить исходники мы не можем. Оно пытается HTTP парсить? Ну а где документация и табличка с описанием поддержки протокола HTTP? Или оно полностью протокол поддерживает? Об этом ни слова нигде, может я конечно плохо читал, но в библиотеке за 500$ такие вещи должны легко находиться, КМК.
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
Здравствуйте, _facelift, Вы писали:
_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая. _>Что думаете про нее?
Я бы не купил. И даром бы не взял.
Кто его знает, сколько там тонких криптографических ошибок в реализации SSL? Библиотека клозедсорсная, видимости никакой. И автор вроде не является общеизвестным авторитетом в области криптографии. Даже простой вопрос, какие версии SSL/TLS поддерживаются, не имеет очевидного ответа. Окажется в итоге, что там SSL 2.0 с RC4 в качестве шифра и MD5 в качестве подписи
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
Здравствуйте, abrec, Вы писали: A>Если программист, которого наняли писать сервер, причем на с++, не знаком с сокетами, фрэймворками типа boost::asio, zmq, возможно в скором времени std::asio, A>то ему, для написания, качественного сервера, ваша библиотека не поможет. A>Если жэ знаком, то она для него бесполезна.
Я не часто видал чтобы кого-то нанимали писать сервер. Обычно нанимают людей работать работу, а сервер там или еще что — дело 10-е, по ходу дела видно будет. Контракторов — да вполне могут нанять только написать сервер. Бывают софто-инженеры — профессионалы не в каких-то там серверах и бустах, а в определенной проблемной области. Ничего удивительного если эти инженеры не курсах про boost::asio. Но нынче все сферы деятельности используют сети, поэтому время от времени сервер писать приходится многим. Я так понял товарищ предлагает класс, который значительно упростит этот процесс. Это отличная идея. Трудно сказать воплощена ли она тоже отлично и стоит ли оно таких денег — я не разбирался в деталях. Тем не менее, вот он написал как любой дурак может легко и просто создать сервер на основе его библиотеки классов. Вы можете предложить тоже самое с этим boost::asio? Или эта асиа — такая сложная штука что для нее понадобится нанимать спец. программиста?