websocket c++ example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | //============================================================================ // Name : websocket.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <Poco/Net/WebSocket.h> #include <Poco/Net/HTTPClientSession.h> #include <Poco/Net/HTTPRequest.h> #include <Poco/Net/HTTPResponse.h> #include <Poco/Net/ServerSocket.h> #include <Poco/Net/NetException.h> #include <Poco/Exception.h> using Poco::Net::HTTPClientSession; using Poco::Net::HTTPRequest; using Poco::Net::HTTPResponse; using Poco::Net::HTTPServerRequest; using Poco::Net::HTTPServerResponse; using Poco::Net::WebSocket; using Poco::Net::WebSocketException; using Poco::Exception; using namespace std; int ws_main() { char buffer[1024]; int flags; int n; std::string payload; try { HTTPClientSession cs( "echo.websocket.org" , 80); HTTPRequest request(HTTPRequest::HTTP_GET, "/" , "HTTP/1.1" ); HTTPResponse response; std::string cmd; WebSocket * ws = new WebSocket(cs, request, response); // Causes the timeout payload = "SGClient: Hello World!" ; cout << "Send: SGClient: Hello World!" << endl; ws->sendFrame(payload.data(), payload.size(), WebSocket::FRAME_TEXT); n = ws->receiveFrame(buffer, sizeof (buffer), flags); buffer[n] = '\0' ; cout << "Received: " << buffer << endl; while (cmd != "exit" ) { cmd = "" ; cout << "Please input[exit]:" ; std::cin >> cmd; ws->sendFrame(cmd.data(), cmd.size(), WebSocket::FRAME_TEXT); n = ws->receiveFrame(buffer, sizeof (buffer), flags); buffer[n] = '\0' ; if (n > 0) { std::cout << "Receive: " << buffer << std::endl; } } ws->shutdown(); } catch (Exception ex) { cout << ex.displayText() << endl; cout << ex.what() << endl; return -1; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?