欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Netplus收发消息的基本流程

发布时间:2023/12/18 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Netplus收发消息的基本流程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本文为初见,Netplus快速开始之PingPong Example系列第四篇


启动一个服务 (server端):

  • 实现自己的Channel Handler
  • 在tcp://ip:port处监听服务
  • 当Accept成功新的Channel后,为Channel添加Channel Handler
  • Code Example:

    这个例子,我们暂时使用一个Netplus自带的 channel handler。

    netp::handler:echo:当收到来自对端的消息的时候,原样回复。

    在这个例子中, 我们监听tcp://0.0.0.0:22310,当收新的连接Accept成功后,为其添加一个叫echo的handler

    NRP<netp::channel_listen_promise> f_listen = netp::socket::listen_on( "tcp://0.0.0.0:22310", [](NRP<netp::channel> const& ch) { //once a new channel accepted, we add a echo handler which reply what it receivesch->pipeline()->add_last(netp::make_ref<netp::handler::echo>()); }); int listenrt = std::get<0>(f_listen->get()); if(listenrt != netp::OK) {//do ... } //...

    连接一个服务(client端):

  • 实现自己的Channel Handler
  • 拨号至tcp://ip:port
  • 当拨号成功时,为Channel添加Channel Handler
  • Code Example:

    我们使用一个Netplus自带的channel handler

    netp::handler::dump_in_len:当收到来自对端的消息的时候,在屏幕打印出消息的长度

    在这个例子中,我们拨号至tcp://127.0.0.1:22310,如果拨号成功,我们向对端发送hello。当收到来自对端的回复时,在屏幕上打印收到的消息的长度。

    std::string url = "tcp://127.0.0.1:22310"; NRP<netp::channel_dial_promise> f = netp::socket::dial(url, [url](NRP<netp::channel> const& ch) {ch->pipeline()->add_last(netp::make_ref<netp::handler::dump_in_len>()); });int dialrt = std::get<0>(f->get()); if(dialrt != netp::OK) {return dialrt; }NRP<netp::channel> ch = std::get<1>(f->get()); NRP<netp::packet> write_bytes = netp::make_ref<netp::packet>(); write_bytes->write("hello",5);NRP<netp::promise<int>> write_p = ch->ch_write(write_bytes); write_p->if_done([](int rt){if(rt == netp::OK) {//WRITE SUCCEED..} });

     

    注意到没,服务器,客户端,都是如下三步曲

  • 实现handler
  • 监听/拨号
  • 设置handler
  • So easy!

    下一篇,我们将正式介绍 PingPong Example。

     

    写代码的冰冰

    总结

    以上是生活随笔为你收集整理的Netplus收发消息的基本流程的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。