2012-03-02 3 views
12

C++을 사용하여 websocket 클라이언트를 구현해야합니다. 이미 루비를 사용하여 기본 websocket 서버를 만들었습니다. 하지만 이제는 c/C++를 사용하여 연결을 테스트하려고합니다. c/C++에서 웹 소켓을 구현하는 데 사용할 수있는 라이브러리를 쉽게 사용할 수 있습니까?Websocket 클라이언트 (C++)

미리 감사드립니다.

+9

젠장, 사람들이 _C/C++ _을 쓸 때 마음이 싫다. _C_ 또는 _C++ _를 사용하고 있습니까? ** 같은 언어가 아닙니다 **. – ApprenticeHacker

+0

나는 당신과 동의한다. 그러나 클라이언트는 c 또는 C++ 중 하나에서 데모를 요구하고있다. 그 죄송합니다. :-) – hbdev012

+0

문제 없습니다. 롤. – ApprenticeHacker

답변

4

boost :: asio와 Poco.Net 및 기타 몇 가지가있을 수 있지만 C-API 버클리 소켓은 그리 어렵지 않으므로 라이브러리를 사용하지 않으려는 경우 사용하십시오.

편집 : 죄송합니다. "websockets"에 대해 잘못 생각한 것 같습니다. 여기 보셨어요? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (Simple C++ WebSocket Client (draft 08+ compatible)?에서 가져옴)

+0

현재보고 있습니다. 그리고 websocket ++가 내 구현에 유용하다는 것을 알았습니다. 나는 그것이 효과가 있기를 바랍니다. 감사합니다 :-) – hbdev012

+0

websocket ++로 가려면 +1 : spec (최종 RFC6455) 및 고성능에 매우 잘 부합합니다. ASIO 기반. – oberstet

+0

ASIO – 111111

7

Websocket ++는 당신을 위해해야합니다.

서버/클라이언트가 구현하는 Websocket의 버전이 무엇인지 알고 있지만.

0

많이 검색 한 결과, POCO 위에 앉아있는이 편리한 프로젝트를 발견했습니다. 나는 그것에게 시도를주고, 나의 경험으로 되돌아 가게 할 예정이다.

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

업데이트 : 너무 많은 시간이 라이브러리를 통합하는 시도

. 현재 완전히 구워지지 않았습니다. 프로덕션 환경에서 사용하기 전에 더 많은 작업이 필요합니다.

6

좋은 라이브러리가 여기에있다, Beast.WebSocket : http://vinniefalco.github.io/

을 여기에 웹 소켓 이야기 예제 프로그램입니다 :

#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

내가 부스트 버전 : 1.53.0, 그리고 나는 치명적인 오류가 발생합니다 : 부스트/짐승/websocket.hpp : 해당 파일이나 디렉토리가 없습니다. – AMB

+0

부스트 1.58.0 이상이 필요하며 포함 경로에 beast/include 디렉토리를 추가해야합니다. –

+0

나는 최근 부스트를 다운로드하고 그것에 짐승을 찾지 못한다. 어쨌든 나는 부스트와 짐승을 다운로드하고 내 코드를 컴파일 해 보았고 많은 오류가 발생했다. 그래서 지금은 easywsclient로 테스트를하고 있지만 내일이 라이브러리를 시험해 보겠다. idk 무엇이 잘못되었는지, 일부 .hpp 파일이 내일 완전히 오류가 발생하여 실종되었다고합니다. WebSocket Client를 실행하는 방법에 대한 단계별 단계가 있어야합니다. 덕분에 – AMB

관련 문제