用python写1个简单的聊天服务器4-协议设计与处理

本文介绍了在使用TCP协议时,由于数据流可能导致数据被分割发送和接收,从而需要进行粘包处理的问题。文章提出了C++游戏服务器常用的包头(包长+协议号)设计,并决定在Python聊天服务器中采用JSON格式来定义协议。服务器端接收到数据后,通过搜索包长来提取完整协议,并依据action进行反射操作,以解析和处理协议。
摘要由CSDN通过智能技术生成

因为tcp是数据流。所以1段数据可能会被分开发送或者接收,这样在服务器接受以后就存在1个问题。如何确认获取到的协议完整性?

这就需要服务器粘包处理。


C++游戏服务器协议部分一般都是采用 包长+协议号+数据

通过读取2或者4个字节包长,根据包长从数据流中提取固定长度的内容,然后判断协议号,对应到struct以后提取数据。


想一下最终决定采用json格式。


协议

提交部分

{
	"lentgh":12,
	"action":"register",

	"username":"watsy",
	"password":"123456"
}

其中length为整个json的长度

action为方法。

剩下的为提交的字段


返回

{
    "status":1,
    "errcode":0,
    "action":"login",
    "datas":{
        "uid":1,
        "name":"watsy",
        "head":"xxxx.jpg",
        "descriptio
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值