欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年02月13日 09:40:47   作者:雨聲不在  
今天小編就為大家分享一篇對python 自定義協(xié)議的方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

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

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í)的地方

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

另外一個是vi寫代碼真是直接方便

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

以上這篇對python 自定義協(xié)議的方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Python實(shí)現(xiàn)將列表數(shù)據(jù)生成折線圖

    基于Python實(shí)現(xiàn)將列表數(shù)據(jù)生成折線圖

    這篇文章主要介紹了如何利用Python中的pandas庫和matplotlib庫,實(shí)現(xiàn)將列表數(shù)據(jù)生成折線圖,文中的示例代碼簡潔易懂,需要的可以參考一下
    2022-03-03
  • Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進(jìn)行分析

    Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進(jìn)行分析

    這篇文章主要給大家介紹了關(guān)于利用Python榮國采集兩萬條貓眼數(shù)據(jù),對《無名之輩》影評進(jìn)行分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Python變量基礎(chǔ)知識

    Python變量基礎(chǔ)知識

    這篇文章主要介紹Python變量的基礎(chǔ)知識,圍繞Python變量相關(guān)知識點(diǎn)展開,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-10-10
  • Python讀取txt某幾列繪圖的方法

    Python讀取txt某幾列繪圖的方法

    今天小編就為大家分享一篇Python讀取txt某幾列繪圖的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 對pycharm代碼整體左移和右移縮進(jìn)快捷鍵的介紹

    對pycharm代碼整體左移和右移縮進(jìn)快捷鍵的介紹

    今天小編就為大家分享一篇對pycharm代碼整體左移和右移縮進(jìn)快捷鍵的介紹,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 基于Python的XSS測試工具XSStrike使用方法

    基于Python的XSS測試工具XSStrike使用方法

    XSS(Cross Site Scripting,跨站腳本攻擊)是一類特殊的Web客戶端腳本注入攻擊手段,通常指攻擊者通過“HTML注入”篡改了網(wǎng)頁,插入惡意的腳本,從而在用戶瀏覽網(wǎng)頁時控制瀏覽器的一種攻擊。
    2017-07-07
  • opencv 圖像濾波(均值,方框,高斯,中值)

    opencv 圖像濾波(均值,方框,高斯,中值)

    這篇文章主要介紹了opencv 圖像濾波(均值,方框,高斯,中值),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Android模擬器無法啟動,報(bào)錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法

    Android模擬器無法啟動,報(bào)錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ I

    這篇文章主要介紹了Android模擬器無法啟動,報(bào)錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法,通過模擬器ram設(shè)置的調(diào)整予以解決,需要的朋友可以參考下
    2016-07-07
  • python實(shí)現(xiàn)圖片九宮格分割

    python實(shí)現(xiàn)圖片九宮格分割

    一張圖片分成的九宮圖,大家知道是怎么做到嗎?這篇文章就為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片九宮格分割功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python寫出新冠狀病毒確診人數(shù)地圖的方法

    Python寫出新冠狀病毒確診人數(shù)地圖的方法

    在本篇文章里小編給大家分享的是關(guān)于Python做新冠狀病毒確診人數(shù)地圖的詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02

最新評論