2012-03-02 3 views
12

Мне нужно реализовать клиент websocket с помощью C++. Я уже создал базовый сервер websocket, используя ruby. Но теперь я хочу проверить соединение с помощью c/C++. Существуют ли простые в использовании библиотеки для реализации websockets в c/C++?Клиент Websocket в C++

Заранее спасибо.

+9

Черт, я ненавижу, когда люди пишут _C/C++ _, решите, используете ли вы _C_ или _C++ _? ** Нет ** одного языка. – ApprenticeHacker

+0

Я согласен с тобой .. но клиент просит демонстрацию в любом из c или C++. Простите за это. :-) – hbdev012

+0

без проблем. лол. – ApprenticeHacker

ответ

4

Есть boost :: asio и Poco.Net и, возможно, несколько других, но сокеты C-API berkeley не так уж трудны, поэтому, если вы не хотите использовать эти библиотеки, взгляните на них.

Редактировать: Извините, я, вероятно, ошибся с «websockets». Вы смотрели здесь? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (Получено с Simple C++ WebSocket Client (draft 08+ compatible)?)

+0

В настоящее время изучает его. И я нашел websocket ++ полезным для моей реализации. Надеюсь, это сработает. Спасибо :-) – hbdev012

+0

+1 для перехода с websocket ++: он очень соответствует спецификации (окончательный RFC6455) и высокой производительности. и ASIO. – oberstet

+0

Очень рекомендую ASIO – 111111

0

После долгих поисков я нашел этот удобный проект, который находится поверх POCO. Я собираюсь дать ему попробовать и отправить обратно с моим опытом.

https://github.com/hannon235/socket.io-poco/blob/master/examples/TestClient/main.cpp

Update:

Пробовал интегрировать эту библиотеку слишком много времени. В настоящее время он не полностью испечен. Это требует больше работы перед использованием в производственных условиях.

2

Возможно, это по-прежнему может быть полезно.

Существует хорошая библиотека websocket, разработанная для C. Существует несколько примеров того, как вы можете создать веб-узел и обработать его.

http://libwebsockets.org/trac/libwebsockets (для более подробной информации) или https://github.com/warmcat/libwebsockets

6

Там отличная библиотека здесь, Beast.WebSocket, которая в значительной степени опирается на Boost.Asio: http://vinniefalco.github.io/

Вот пример программы, которая говорит WebSocket:

#include <beast/websocket.hpp> 
#include <beast/buffers_debug.hpp> 
#include <boost/asio.hpp> 
#include <iostream> 
#include <string> 

int main() 
{ 
    // Normal boost::asio setup 
    std::string const host = "echo.websocket.org"; 
    boost::asio::io_service ios; 
    boost::asio::ip::tcp::resolver r(ios); 
    boost::asio::ip::tcp::socket sock(ios); 
    boost::asio::connect(sock, 
     r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"})); 

    using namespace beast::websocket; 

    // WebSocket connect and send message using beast 
    stream<boost::asio::ip::tcp::socket&> ws(sock); 
    ws.handshake(host, "/"); 
    ws.write(boost::asio::buffer("Hello, world!")); 

    // Receive WebSocket message, print and close using beast 
    beast::streambuf sb; 
    opcode op; 
    ws.read(op, sb); 
    ws.close(close_code::normal); 
    std::cout << 
     beast::debug::buffers_to_string(sb.data()) << "\n"; 
} 
+0

У меня есть версия Boost: 1.53.0, и я получаю фатальную ошибку: boost/beast/websocket.hpp: Нет такого файла или каталога – AMB

+0

Вам нужно Boost 1.58.0 или новее, и вам нужно добавить каталог beast/include к вашим путям include. –

+0

Я загружаю последнюю версию и не могу найти в ней зверя, в любом случае я загрузил boost и beast и попытался собрать мой код и получил много ошибок, поэтому теперь тестирование с помощью easywsclient, но попробую эту библиотеку завтра. idk, что пошло не так, он сказал, что какой-то файл .hpp пропускает сообщение о полной ошибке, завтра должен быть шаг за шагом, о том, как запустить WebSocket Client. спасибо – AMB

Смежные вопросы