• vc websocket简单测试


    websocket可用于网页和vc程序进行交互,websocket需要opensll、boost库支持,所以需要先将以上两样下载配置好,然后下载websocket源码。

    这里以下载的websocketpp-0.7.0\examples\echo_server为例子,在vs2013中新建一个win32程序,将echo server的代码拷贝到当前工程。

    #include <websocketpp/config/asio_no_tls.hpp>
    
    #include <websocketpp/server.hpp>
    
    #include <iostream>
    
    typedef websocketpp::server<websocketpp::config::asio> server;
    
    using websocketpp::lib::placeholders::_1;
    using websocketpp::lib::placeholders::_2;
    using websocketpp::lib::bind;
    
    // pull out the type of messages sent by our config
    typedef server::message_ptr message_ptr;
    
    // Define a callback to handle incoming messages
    void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
        std::cout << "on_message called with hdl: " << hdl.lock().get()
                  << " and message: " << msg->get_payload()
                  << std::endl;
    
        // check for a special command to instruct the server to stop listening so
        // it can be cleanly exited.
        if (msg->get_payload() == "stop-listening") {
            s->stop_listening();
            return;
        }
    
        try {
            s->send(hdl, msg->get_payload(), msg->get_opcode());
        } catch (const websocketpp::lib::error_code& e) {
            std::cout << "Echo failed because: " << e
                      << "(" << e.message() << ")" << std::endl;
        }
    }
    
    int main() {
        // Create a server endpoint
        server echo_server;
    
        try {
            // Set logging settings
            echo_server.set_access_channels(websocketpp::log::alevel::all);
            echo_server.clear_access_channels(websocketpp::log::alevel::frame_payload);
    
            // Initialize Asio
            echo_server.init_asio();
    
            // Register our message handler
            echo_server.set_message_handler(bind(&on_message,&echo_server,::_1,::_2));
    
            // Listen on port 9002
            echo_server.listen(9002);
    
            // Start the server accept loop
            echo_server.start_accept();
    
            // Start the ASIO io_service run loop
            echo_server.run();
        } catch (websocketpp::exception const & e) {
            std::cout << e.what() << std::endl;
        } catch (...) {
            std::cout << "other exception" << std::endl;
        }
    }
    
    
    • 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

    会有些报错,需要在项目属性–》配置属性–》VC++目录中设置好以下包含目录和库目录。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    通过写一份html来调用:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    	<div>
    		<input type="submit" value="Start" onclick="start()"/>
    	</div>
    	<div id="messages"></div>
    	<script type="text/javascript">
    		var webSocket = new WebSocket('ws://localhost:9002');
    		
    		webSocket.onerror = function(event){
    			onError(event)
    		};
    		webSocket.onopen = function(event){
    			onOpen(event)
    		};
    		webSocket.onmessage = function(event){
    			onMessage(event)
    		};
    		
    		function onMessage(event){
    			document.getElementById('messages').innerHTML
    				+= '<br />Get Message From Server: ' + event.data;
    		}
    		function onOpen(event){
    			document.getElementById('messages').innerHTML
    				= 'Connection established';
    		}
    		function onError(event){
    			alert(event.data);
    			alert("error");
    		}
    		function start(){
    			webSocket.send('hello');
    			return false;
    		}
    	</script>
    </body>
    </html>
    
    • 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

    先运行vc程序,然后运行html,成功连接并发送消息。
    在这里插入图片描述

  • 相关阅读:
    通过Nginx重新认识HTTP错误码
    主流架构(gcc、msvc、x86、x64、arm)中double与float浮点数保留精度(末尾清零)
    技术管理杂谈
    [构造]Complementary XOR Codeforces1750C
    张量数据操作基础
    怎样用python爬虫实现自动监测百度是否收录域名
    【AI系统内容推荐第26期】更新一下我对深度学习编译器和框架的认识;OpenPPL 中的卷积优化技巧;机器学习访存密集计算编译优化框架AStitch
    Mysql基本查询
    DeskHIL桌面级仿真测试平台
    分析各大常用的JS加密优缺点
  • 原文地址:https://blog.csdn.net/bangtanhui/article/details/125498219