1. 以转账为例,说明EOS消息处理流程

step1. cleos客户端发起转账命令,
step2. 解析transfer命令,通过create_transfer函数将交易发送者、交易接收者、token数量等信息封装成mutable_variant_object对象
step3. 调用send_action函数,将交易信息发送到服务器端

main→send_actions→push_actions→push_transaction→call→do_http_call→do_connect(httpc.cpp)→do_txrx

./cleos transfer sender recipient amount memo

programs/cleos/main.cpp

main()
{…
send_actions({create_transfer(sender, recipient, amount, memo)});
…
}void send_actions {auto result = push_actions( move(actions), extra_kcpu, compression);…
}fc::variant push_actions {signed_transaction trx;trx.actions = std::forward<decltype(actions)>(actions);return push_transaction(trx, extra_kcpu, compression);
}fc::variant push_transaction{trx.set_reference_block(ref_block_id);// 发送 ”/V1/chain/push_transaction” URL地址到服务器端if (!tx_dont_broadcast) {return call(push_txn_func, packed_transaction(trx, compression));}
}fc::variant call{try {return eosio::client::http::do_http_call( url, path, fc::variant(v) );}
}fc::variant do_http_call {// 将请求的URL封装成http包request_stream << "POST " << path_prefix + path << " HTTP/1.0\r\n";request_stream << "Host: " << server << "\r\n";request_stream << "content-length: " << postjson.size() << "\r\n";request_stream << "Accept: */*\r\n";request_stream << "Connection: close\r\n\r\n";request_stream << postjson;// 和服务器建立连接do_connect(socket, server, port);// 发送http报文,并获取返回结果re = do_txrx(socket, request, status_code);
}

出块过程 (1)close发送消息相关推荐

  1. 出块过程(2)nodeos 服务器接收消息

    1. 步骤 在nodeos的main函数中启动http_plugin插件,注册处理http请求的回调函数(handle_http_request),然后监听socket通信端口,等待建立客户端远程连接 ...

  2. BCH三小时缓慢出块——需要重视的小概率事件

    BitcoinCash 最近BCH以及诸多主流币迎来了一波行情回暖,平均涨幅均超过20%.伴随着行情的回暖,社区用户发现BCH区块高度606218在北京时间2019-10-26 15:21:57被挖出 ...

  3. netty心跳过程中 发送消息失败_netty心跳机制和断线重连(四)

    心跳是为了保证客户端和服务端的通信可用.因为各种原因客户端和服务端不能及时响应和接收信息.比如网络断开,停电 或者是客户端/服务端 高负载. 所以每隔一段时间 客户端发送心跳包到客户端  服务端做出心 ...

  4. 生产者发送消息的过程?

    1.Producer先连接到Broker,建立连接Connection,开启一个信道(Channel). 2.Producer声明一个交换器并设置好相关属性. 3.Producer声明一个队列并设置好 ...

  5. 窗口发送消息参数详解

    窗口发送消息参数详解 //    窗口.发送消息    函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg ...

  6. Windows 窗口发送消息参数详解

    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果中文函数原型: 发送消息(hwnd,msg,wparam ...

  7. 微信IOT模块 用户手册(串口向微信发送消息,串口与微信通讯)

    微信IOT模块 用户手册 微信IOT模块 以下简称[模块] 由 广州互联智控科技有限公司 出品. #简介 设备通过串口连接[模块],直接向手机微信发送消息.点击微信消息进入设备控制界面,通过控制界面实 ...

  8. 【GNZ48-章泽婷应援会】基于Java的SNH48Group应援会机器人(三)发送消息

    这一部分是我也看了好久,才决定用Java的Robot + User32来实现.Robot是java.awt下的一个类,该类用于为测试自动化.自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统 ...

  9. java向某一IP发送消息_javaTCP如何将数据发送给指定IP的客户端(求代码)谢谢! 爱问知识人...

    packagecom.socket.tcp.demo; importjava.io.IOException; importjava.io.OutputStream; importjava. net.S ...

最新文章

  1. rhel5.1 vncserver
  2. 程序员面试【Brainteasers】
  3. 数据中心运营:内包还是外包?
  4. mysql数据库没启动命令_mysql数据库服务启动和停止命令介绍(转载)
  5. Python中的del用法
  6. Mac上配置React Native
  7. Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇
  8. 使用开源软件7ZIP在Windows压缩.tar.gz格式包
  9. 台式计算机能装蓝牙吗,台式机如何安装蓝牙
  10. raid服务器如何备份系统,RAID服务器的系统分区备份方法
  11. Bus error的调试解决方法
  12. ​2 万字系统总结,带你实现 Linux 命令自由?
  13. ctf赛题上传一个php木马,从一道CTF题学习PHP反序列化漏洞
  14. caffe生成lmdb数据集的脚本
  15. iperf 工具使用
  16. 计算机设备型号和序列号,怎么查看计算机型号_怎么查看计算机序列号
  17. 知名开发社区:v2ex域名DNS被污染
  18. IFE 耀耀学院(基础综合)
  19. Swagger使用方式,告别postman
  20. 计算机excel高级筛选操作大全,不看后悔的excel操作技巧

热门文章

  1. 微服务实战(二):使用API Gateway
  2. com.rr.domain.Department_$$_javassist_5 cannot be cast to javassist.util.proxy.Proxy
  3. Andoird --- Json 经典异常:org.json.JSONException: Unterminated string at character
  4. Android --- AndroidManifest.xml文件内容详细介绍
  5. ubuntu19 安装git_如何在Ubuntu 20.04上安装Git
  6. 向量笛卡尔积_如何创建向量的矢量的笛卡尔积?
  7. kvm虚拟机_通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
  8. aix下mysql启动命令_AIX常用操作命令
  9. UPS技术培训系统方案
  10. 成功解决利用matplotlib.pyplot进行绘图的时候整个画布中的绘制曲线只显示一部分