国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 對(duì)python 自定義協(xié)議的方法詳解

對(duì)python 自定義協(xié)議的方法詳解

2021-05-27 00:37雨聲不在 Python

今天小編就為大家分享一篇對(duì)python 自定義協(xié)議的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

前面說(shuō)到最近在寫(xiě)python的一些東西,然后和另外一位小伙伴定義了協(xié)議,然后昨天我有一部分東西沒(méi)理解對(duì),昨天上午我自己重寫(xiě)了一遍接收和發(fā)送的全部邏輯,昨天下午補(bǔ)了壓力測(cè)試的腳本,自測(cè)沒(méi)問(wèn)題之后告知聯(lián)調(diào)的小伙伴。

結(jié)果上午還是出了一點(diǎn)問(wèn)題,然后我們兩對(duì)代碼,他寫(xiě)了一個(gè)python的實(shí)現(xiàn)。還好最后我這邊沒(méi)問(wèn)題。(我也害怕是我這邊出問(wèn)題啊,所以我自己的代碼都自己檢查了好幾遍)

簡(jiǎn)單放一下他的實(shí)現(xiàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import struct
import ctypes
 
class E(Exception):
 def __init__(self, what):
  self.what = what
 
 def __str__(self):
  return self.what
 
def unmarshall_packet(pk):
 if len(pk) < 12:
  raise E("Invalid pk header")
 size, uri, prop_count = struct.unpack("<III", pk[:12]);
 print "size:%d uri:%d prop_count:%d" % (size, uri, prop_count)
 if len(pk) - 12 != size - 8:
  raise E("Invalid pk length")
 
 ss = pk[12:]
 offset = 0
 for x in range(0, prop_count):
  # Pop key
  key_size, = struct.unpack_from("<I", ss, offset)
  print "key_size:%d" % (key_size,)
  offset += 4
  key, = struct.unpack_from("<%ds" % (key_size - 1,), ss, offset)
  offset += key_size
 
  # Pop value
  val_size, = struct.unpack_from("<I", ss, offset)
  offset += 4
  print "val_size:%d" % (val_size,)
  val, = struct.unpack_from("<%ds" % (val_size - 1,), ss, offset)
  offset += val_size
 
 
  print "key:%s val:%s" % (key, val)
 
 
key1 = "key1"
val1 = "val1"
key2 = "key2"
val2 = "val2"
offset = 0
ss = ctypes.create_string_buffer(9085)
struct.pack_into("<III", ss, 0, 8 + 4 + len(key1) + len(val1) + len(key2) + len(val2) + 16, 2, 2)
offset += 12
struct.pack_into("<I%dscI%dscI%dscI%dsc" % (len(key1), len(val1), len(key2), len(val2)), ss, offset, len(key1) + 1, key1, '\0',
 len(val1) + 1, val1, '\0',
 len(key2) + 1, key2, '\0',
 len(val2) + 1, val2, '\0')
offset += len(key1) + len(val1) + len(key2) + len(val2) + 4 + 16
unmarshall_packet(ss[:offset])
 
"""
hex=""
ss = bytearray.fromhex(hex)
unmarshall_packet(ss)

有很多可以學(xué)習(xí)的地方

一個(gè)是python 的 struct 對(duì) bytearray 的操作真是舒服,直接放進(jìn)去就可以了(之前我有不少東西都是徒手解的,回頭再用這個(gè)優(yōu)化下自己的代碼吧。)

另外一個(gè)是vi寫(xiě)代碼真是直接方便

要說(shuō)缺點(diǎn)的話,應(yīng)該是用私有協(xié)議,沒(méi)有第三方工具可以作為公證,例如postman之類的。

以上這篇對(duì)python 自定義協(xié)議的方法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/yeshennet/article/details/77238393

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎影视在线播放 | 蜜桃视频一区 | 色av综合| 不卡一区| 黄色精品在线观看 | 国产精品网站在线观看 | 黄色一级视频在线观看 | 色在线电影| 日韩精品一区二区三区在线播放 | 亚洲第一成人在线视频 | 香蕉yeye凹凸一区二区三区 | 午夜小电影 | 精品国产视频 | 中文字幕日韩在线 | 久久精品a一级国产免视看成人 | 一区二区三区四区精品 | 国产欧美精品一区二区三区四区 | 中文字幕一区二区三区在线观看 | 国产精品久久久久av | 日韩欧美在线一区 | 欧美性猛交一区二区三区精品 | 日本在线视频一区 | 一区视频 | 国内精品一区二区三区视频 | 久久国产精品一区二区三区 | 性色综合 | 中国女人黄色大片 | 伦理午夜电影免费观看 | 国产精品久久久久久久久 | 亚洲激情在线观看 | 亚洲国产高清在线 | 免费一级在线视频 | 欧美亚洲国产激情 | 一级毛片在线播放 | 欧美一区不卡 | 国产精品高清在线 | 欧美 日韩 中文字幕 | 久久精品xx老女人老配少 | 米奇色网 | 亚洲国产成人av好男人在线观看 | 免费国产视频 |