当前位置: 首页 > news >正文

http post协议实现简单的rpc协议,WireShark抓包分析

文章目录

  • 1.http 客户端-RPC客户端
  • 1.http 服务端-RPC服务端
  • 3.WireShark抓包分析
    • 3.1客户端到服务端的HTTP/JSON报文
    • 3.2服务端到客户端的HTTP/JSON报文

1.http 客户端-RPC客户端

import json
import requests# 定义 RPC 客户端类
class RPCClient:def __init__(self, server_url):self.server_url = server_urldef call(self, method, params):# 构建 JSON-RPC 请求request_data = {'method': method,'params': params,'id': 1}#json数据转化为网络字节流数据json_data = json.dumps(request_data).encode('utf-8')# 发送 POST 请求response = requests.post(self.server_url, json_data, headers={'Content-type': 'application/json'})# 解析响应result = response.json()if 'error' in result:raise Exception(result['error'])return result['result']# 创建 RPC 客户端实例
client = RPCClient('http://192.168.1.9:8000')# 调用远程方法
result = client.call('add', [3, 5])
print("Result:", result)

1.http 服务端-RPC服务端

import json
from http.server import BaseHTTPRequestHandler, HTTPServer# 自定义处理程序类
class RPCHandler(BaseHTTPRequestHandler):def do_POST(self):# 解析接收到的 JSON 数据content_length = int(self.headers['Content-Length'])json_data = self.rfile.read(content_length).decode('utf-8')print("-------json_data:{}".format(json_data))data = json.loads(json_data)print("-------data:{}".format(data))# 处理 RPC 请求result = self.process_request(data)# 构建响应self.send_response(200)self.send_header('Content-type', 'application/json')self.end_headers()# 将python对象转为json字符串,encode用于将字符串转换为字节流b开头,默认用utf-8编码print(json.dumps(result).encode('utf-8'))self.wfile.write(json.dumps(result).encode('utf-8'))def process_request(self, data):# 在这里处理 RPC 请求# 根据请求内容调用相应的函数或方法# 返回结果if 'method' in data:method = data['method']if method == 'add':if 'params' in data and len(data['params']) == 2:a, b = data['params']result = a + breturn {'result': result}return {'error': 'Invalid request'}# 启动 RPC 服务器
def run_server():port = 8000server_address = ('192.168.1.9', port)httpd = HTTPServer(server_address, RPCHandler)httpd.serve_forever()if __name__ == '__main__':run_server()

在这里插入图片描述

3.WireShark抓包分析

在这里插入图片描述

3.1客户端到服务端的HTTP/JSON报文

在这里插入图片描述

3.2服务端到客户端的HTTP/JSON报文

在这里插入图片描述

相关文章:

http post协议实现简单的rpc协议,WireShark抓包分析

文章目录 1.http 客户端-RPC客户端1.http 服务端-RPC服务端3.WireShark抓包分析3.1客户端到服务端的HTTP/JSON报文3.2服务端到客户端的HTTP/JSON报文 1.http 客户端-RPC客户端 import json import requests# 定义 RPC 客户端类 class RPCClient:def __init__(self, server_url…...

1024程序员节

一年一年真快啊,...

嵌入式--->怎样选择编译语言,C C++或是Rust?

C 老牌语言,不可替代,速度和资源占用都是嵌入式领域着重考虑的 Rust 作为新生语言,已经成长到可以和C进行竞争的地步,不论是速度还是资源占用看,还是安全性 C 嵌入式开发使用C的思想,可以极大地简化代码&am…...

一起学数据结构(12)——归并排序的实现

1. 归并排序原理: 归并排序的大概原理如下图所示: 从图中可以看出,归并排序的整体思路就是把已给数组不断分成左右两个区间,当这个区间中的数据数量到达一定数值时,便返回去进行排序,整体的结构类似二叉树…...

读书笔记之《敏捷测试从零开始》(一)

大家好,我是rainbowzhou。 子曰:学而时习之,不亦说乎?今天我想和大家分享一本测试书籍——《敏捷测试从零开始》。以下为我的读书笔记: 精彩片段摘录: 焦虑往往来自于对比,当你在自己的圈子里面…...

视频亮度太低了,如何调高

充足、均匀、稳定的光亮对于视频制作是至关重要的,在现实生活中,不可预见的天气变化和拍摄地方的阴暗常常给我们留下暗淡无光的视频片段。 如果你的视频太暗想知道如何使它变亮,且又不知道使用哪个工具,那你无需担心,因…...

Xubuntu16.04系统中安装create_ap创建无线AP

1.背景说明 在Xubuntu16.04系统的设备上安装无线WIFI模块后,想通过设备自身的无线AP,进行和外部设备的连接,需要安装create_ap软件,并设置无线AP的名称和密码,并设置为开机自启动。 create_ap是一个用于在Linux系统上创…...

WPF 设置全局静态参数

可以使用system官方库来设置参数 引入system xmlns:system"clr-namespace:System;assemblymscorlib"设置参数资源 <Window.Resources><system:Double x:Key"ButtonWidth">90</system:Double></Window.Resources>使用参数资源 &l…...

Leetcode链表问题汇总

目录 [2. 两数相加](https://leetcode.cn/problems/add-two-numbers/)[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[206. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[19. 删除链表的倒数第 N 个结点](https://leetcode.cn/p…...

基于卷的磁盘扫描算法设计

1、设计目的 常规情况下&#xff0c;当我们扫描计算机的硬盘时&#xff0c; 通常会使用诸如FindFirstFile/FindNextFile(Windows)&#xff0c;或者opendir/readdir(Linux)遍历扫描的目录。 一般情形下&#xff0c;由于文件数量相对较少&#xff0c;文件夹层次低&#xff0c;扫…...

计算机组成原理-存储器概念

计算机组成原理-存储器 存储系统的基本概念 1.层次结构 可以直接被CPU读取: 高速缓存:cache主存储器: 主存和内存 辅助存储器: 辅存和外存 2.分类 1.按层次结构划分 如上面所示 2.按存储介质 半导体存储器磁表面存储器光存储器 3.按信息可更改性 r/w存储器ROM(只读存储器) 4…...

力扣刷题 day54:10-24

1.十进制整数的反码 每个非负整数 N 都有其二进制表示。例如&#xff0c; 5 可以被表示为二进制 "101"&#xff0c;11 可以用二进制 "1011" 表示&#xff0c;依此类推。注意&#xff0c;除 N 0 外&#xff0c;任何二进制表示中都不含前导零。 二进制的反…...

Java基础篇 | Java8流式编程

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…...

SolidworksSimulation完成对压力容器的强度分析

如何通过使用SolidworksSimulation完成对压力容器的分析并查看实 体的膜片应力强度以及弯曲应力强度&#xff0c;操作简单易学&#xff0c;让我们进入到操作界面。 我们以罐体底部实体模型为例&#xff0c;这里已经提前设置好了材料。 点击新算例&#xff0c;选择静应力分析 由…...

【C++】继承 ⑨ ( 继承中成员变量同名的处理方案 )

文章目录 一、继承中成员变量同名的处理方案1、继承中成员变量同名的场景说明2、使用域作用符区分同名成员变量 二、代码示例 - 继承中成员变量同名的处理方案 一、继承中成员变量同名的处理方案 1、继承中成员变量同名的场景说明 子类 继承 父类 的 成员 , 如果 子类 中定义了…...

Python报错:‘EagerTensor‘ object has no attribute ‘reshape‘

在使用RPython时&#xff0c;发现python代码部分报错&#xff1a;‘EagerTensor‘ object has no attribute ‘reshape‘ 如何解决&#xff1f; 使用np.array 转换为array&#xff0c;再进行reshape 参考&#xff1a; ‘EagerTensor‘ object has no attribute ‘reshape‘处…...

docker-compose手册

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 前言 一些自己经常用到的docker-compose知识。 一、运行和启动项目 1.1、docker-compose运行…...

【珠峰 WEB 前端架构师课程】学习笔记 100 篇(完结)

该课程是珠峰姜文老师讲的&#xff0c;个人觉得讲的很不错&#xff0c;一路在 b 站学习下来做了 100 篇的学习笔记&#xff0c;收获颇丰。 该课程主要讲了高阶函数、函数柯里化、发布订阅模式、观察者模式、从 0 到 1 实现一个 promise&#xff0c;co 库的实现、eventloop 执行…...

Java线程中sleep()、wait()、yield()、join()方法的使用

1.sleep() sleep(): sleep 方法属于 Thread 类&#xff0c;该行为中线程不会释放锁&#xff0c;只阻塞线程&#xff0c;让出cpu给其他线程&#xff0c;当达到指定的时间后会自动恢复运行状态继续运行。 2.wait() wait(): 该方法属于 Object 类&#xff0c;在这个过程里线程会…...

【机器学习】数据均衡学习笔记

文章目录 序言1. 样本不均衡2. 样本不均衡的影响以及样本均衡的意义3. 什么时候需要进行样本均衡/数据均衡4. 数据不均衡的解决办法 序言 数据集制作过程中需要关注样本均衡问题&#xff0c;学习笔记&#xff0c;简单记录 1. 样本不均衡 分类任务中不同类别样本数差别很大的…...

HunyuanVideo-Foley保姆级教程:Docker Compose编排WebUI+API+Redis缓存

HunyuanVideo-Foley保姆级教程&#xff1a;Docker Compose编排WebUIAPIRedis缓存 1. 环境准备与快速部署 在开始之前&#xff0c;请确保您的硬件配置满足以下要求&#xff1a; 显卡&#xff1a;RTX 4090/4090D 24GB显存内存&#xff1a;≥120GBCPU&#xff1a;10核及以上磁盘…...

告别重复劳动,用快马ai为centos7生成自动化运维脚本提升工作效率

告别重复劳动&#xff0c;用快马AI为CentOS7生成自动化运维脚本提升工作效率 作为一名长期和CentOS7打交道的运维人员&#xff0c;我深刻体会到日常工作中那些重复性配置任务有多耗费时间。直到最近尝试用InsCode(快马)平台的AI生成功能&#xff0c;才发现原来这些繁琐操作都能…...

ReTerraForged终极指南:如何在Minecraft 1.20+中打造专业级真实地形

ReTerraForged终极指南&#xff1a;如何在Minecraft 1.20中打造专业级真实地形 【免费下载链接】ReTerraForged a 1.19 port of https://github.com/TerraForged/TerraForged 项目地址: https://gitcode.com/gh_mirrors/re/ReTerraForged ReTerraForged作为Minecraft 1.…...

一站式歌词提取解决方案:163MusicLyrics自动化歌词获取与处理工具

一站式歌词提取解决方案&#xff1a;163MusicLyrics自动化歌词获取与处理工具 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 163MusicLyrics是一款专业的跨平台歌词提取…...

深度学习图像分割技术原理与应用实践

深度学习图像分割技术原理与应用实践 【免费下载链接】unet unet for image segmentation 项目地址: https://gitcode.com/gh_mirrors/un/unet 概念解析&#xff1a;如何理解图像分割的核心价值&#xff1f; 图像分割是计算机视觉领域的关键技术&#xff0c;它通过将图…...

OpenKore效率提升全攻略:自动化RO游戏的完整指南

OpenKore效率提升全攻略&#xff1a;自动化RO游戏的完整指南 【免费下载链接】openkore A free/open source client and automation tool for Ragnarok Online 项目地址: https://gitcode.com/gh_mirrors/op/openkore OpenKore作为一款免费开源的Ragnarok Online客户端与…...

MATLAB Simulink仿真:基于下垂控制实现蓄电池SOC均衡,稳定直流母线电压和功率

MATLAB/Simulink仿真&#xff0c;蓄电池SOC均衡 采用下垂控制&#xff0c;根据自身容量选择出力&#xff0c;直流母线电压、功率保持稳定无波动 MATLAB/Simulink仿真&#xff0c;蓄电池SOC均衡&#xff08;锂电池&#xff09; 根据微网内功率盈余&#xff0c;两组SOC不同的蓄电…...

如何通过TPFanCtrl2实现ThinkPad风扇智能控制:3步配置终极静音方案

如何通过TPFanCtrl2实现ThinkPad风扇智能控制&#xff1a;3步配置终极静音方案 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 TPFanCtrl2是一款专为ThinkPad笔记本设计…...

mPLUG-Owl3-2B工具评测:消费级GPU上的高效视觉问答解决方案

mPLUG-Owl3-2B工具评测&#xff1a;消费级GPU上的高效视觉问答解决方案 1. 引言&#xff1a;多模态AI的平民化时代 在AI技术快速发展的今天&#xff0c;能够同时理解图像和文本的多模态模型正变得越来越重要。想象一下&#xff0c;当你上传一张照片&#xff0c;AI不仅能识别其…...

Seldon Core 2与Triton推理服务器集成:高性能GPU推理实战指南 [特殊字符]

Seldon Core 2与Triton推理服务器集成&#xff1a;高性能GPU推理实战指南 &#x1f680; 【免费下载链接】seldon-core An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models 项目地址: https://gitcode.com/gh_mirr…...