【Python】Python与C#的消息传递

Python 与 C# 的消息传递

最近和小伙伴在做一些小项目时,神乎其技凑出Python做服务器,C#做客户端的组合,大家各显神通,路子要多野有多野_| ̄|●

使用Json作为中间文件

在两种不同的语言之间通信,需要有一个统一的数据交换格式,无疑Json成为了我们的首选。
由于菜的真实,均对对方语言如何转换感到迷惑,这里贴出Json转化对照表:

PythonJsonC#
dictobjectclass
list, tuplearraylist
str, unicodestringstring
int, long, floatnumberint,long,float
Truetruetrue
Falsefalsefalse
Nonenullnull

这只两边对应统一消息格式,就可以轻松实现Json作为中间文件。

对于C#而言,我们需要引入Newtonsoft.Json (或者其他能进行Json操作的包都行,Json官网都能下载到),以Newtonsoft.Json为例,主要使用了:

函数含义
JsonConvert.SerializeObject(object value)将类序列化成Json字符串
JsonConvert.DeserializeObject<T>(string value)将Json字符串反序列成成指定类

对于Python而言,使用 JSON 函数需要导入 json 库:import json。

函数含义
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象

大端与小端问题

本来这个问题按理说不会出现,由于使用了Socket,在处理分包与粘包时,一些奇妙操作让我不得不记录下这个问题,接下贴出关键部分:

C#客户端:
在这里插入图片描述

Python服务端:
在这里插入图片描述
我们这里采用了最简单的方式处理分包与粘包,即长度+消息内容。结果运行起来总是不对,服务器端似乎接收不到任何东西,经过反复调试,发现是长度的解析有问题:

C# BitConverter.GetBytes 方法发送的数据是:
11 0 0 0 (大小为:11)

Python head中的数据是:
b’\x0b\x00\x00\x00’ (大小为:184549376)

很明显C#是以小端法在处理数据,而Python在以大端法处理,这一切都源于自信的感叹号! ᕙ༼ ͝°益° ༽ᕗ

源于官方文档
换成=世界和平了( ̄▽ ̄)~*


实力低下,请多包涵 (*・ω-q)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值