簡體   English   中英

在jython udp數據包中發送原始十六進制數據

[英]Send Raw hex data in jython udp packet

我對Java有經驗,但是我必須將Java庫集成到同事的python代碼中。 輸入jython,對!

我們正在嘗試發送包含非常具體的數據部分的UDP數據包。

我們正在像這樣構建數據包:

version = 0x0001
referenceNumber = 0x2323
bookID = byteArray('df82818293819dbafde818ef')

為了便於說明,假定byteArray接受一個十六進制數字的字符串並返回一個字節數組

然后,我們構建數據包:

packet = hex(version)
packet += hex(referenceNumber)
packet += bookID

並將其發送到套接字。

我知道這是不正確的,數據類型不能正確,因此concat不會做正確的事情。 我們如何正確構建此數據包? python文檔說s.sendTo()需要一個字符串嗎? 我想我想要一個采用字節數組的s.sendTo()替代方法。

我們希望數據包以udp數據段的形式到達服務器:

00 01 23 23 df 82 81 82 93 81 9d ba fd e8 18 ef

在python中執行此操作的正確方法是什么?

我們正在使用Wireshark來驗證數據包是否正確到達,現在udp數據部分看起來就像python將每個字段轉換為ascii表示一樣。 例如,referenceNumber字段作為文字字符串'0x2323'的ascii值出現。 這很有意義,因為s.sendTo()需要一個字符串。

===================解決方案============================== =

是的,做到了……展示了我對python的了解。 出於好奇,下面是代碼:

version = '0001'
referenceNumber = '2323'

packet = a2b_hex(version)
packet += a2b_hex(referenceNumber)

.. etc

然后就

 s.send(packet)

檢出binascii模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM