Если Вы хотите рекурсию:
PI = 2 * (1 + 1/3 * (1 + 2/5 * (1 + 3/7 * (...))))
Это стало бы после некоторой перезаписи:
PI = 2 * F(1);
с F (i):
double F (int i) {
return 1 + i / (2.0 * i + 1) * F(i + 1);
}
Isaac Newton (Вы, возможно, услышали о нем прежде;)) придумал этот прием. Обратите внимание, что я не учел условие конца, для хранения его простым. В реальной жизни, Вы вид потребности один.
Я считаю, что как Apache Portable Runtime , так и библиотеки GLib GTK + имеют API сокетов. Поскольку ваш вопрос помечен тегами c
и c ++
, я подозреваю, что вам действительно нужны ответы, ориентированные на C ++, но оба они хороши как чистые библиотеки C.
Если вам нужна очень легкая, только C ++, оболочка в стиле iostreams для сокетов BSD, вы можете рассмотреть skstream - это просто и хорошо работает. Конечно, сам интерфейс iostreams оставляет желать лучшего. Однако skstream действительно оборачивает select и обработку сокетов очень низкого уровня для вас довольно хорошо.
ACE может вам помочь!
В этом руководстве представлен обзор уровня адаптации ОС ACE, а также разработка и использование его оболочек C ++ Socket
Да, вы очень далеко продвинетесь с оболочкой Winsock и стандартными сокетами Berkeley. На самом деле различия настолько малы, что почти возможно сделать это с помощью #ifdef
непосредственно в коде
То есть, если вы хотите работать на уровне сокета. Если вам нужно что-то более абстрактное, то, конечно, упаковка этого файла дает вам хорошую возможность также скрыть различия.
В частности, Winsock:
WSAStartup ()
перед любой другой функцией сокета. closesocket ()
WSAGetLastError ()
для получения последней ошибки, а не простой errno
. Это три основных вне моей головы, может быть и больше.
Здесь есть только один правильный ответ. OpenSSL. Потому что, если у вас есть код сокета, вам тоже захочется устанавливать SSL-соединения. Если вы уже работаете в конкретной кроссплатформенной платформе, привязки OpenSSL могут быть уже доступны. Я не думаю, что сейчас есть какое-то оправдание, чтобы не включать SSL / TLS в ваше приложение с самого начала.
Некоторые ссылки для вас:
Библиотека сокетов C ++
Библиотека сокетов C ++ - ComPP 1.3
SimpleSockets
libmsocket
Библиотека TCP / IP Komodia
STLplus Библиотека C ++
Framework
nitro ++
Другой вариант, который вы можете попробовать, - Poco . У Poco есть намного больше, чем просто сокеты, поэтому, если вам нужны другие вещи, он также может предоставить.
Сравнение его с другими инструментами:
Всего два цента
Используйте boost :: asio. Очень хорошая библиотека. Перейдите по этой ссылке http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio.html