Pythonを使用してUDPソケットを介してデータを送信するには、次の形式である必要があることを知っています "\ x41"=A。
Pythonスクリプトudp_send.pyがあり、サーバー側のレジスタ値を表す16進値を送信したいと思います。
Linuxターミナル>>pythonudp_send.py"\x41"を介してスクリプトを実行します。Pythonスクリプトでargv[1]を使用して変数を読み取りました。lenチェックをしましたが3です。\を無視し、x、4、1をそれぞれ1バイトとしますが、\x41は1バイトのみを表します。
次に、data = "\ x" + "41"を連結しようとしましたが、機能しませんでした。
「\x」はPythonによるエスケープとして解釈されます。16進値をスクリプトに渡してUDPソケット経由で送信する方法を見つけようとしていますか?
これまでに次のことを達成しました。UDPソケットを介してPythonスクリプトで定義された16進値を送信します。
from socket import *
from sys import *
## Set the socket parameters
host = <ip-define-here>
port = <port-define-here>
buf = 1024
addr = (host,port)
## Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)
## Send messages
data ='\x41'
#data=argv[1] #commented out
if not data:
print "No data"
else:
if(UDPSock.sendto(data,addr)):
print "Sending message ",data
## Close socket
UDPSock.close()
サーバー側でwiresharkを使用したところ、16進値41が表示されました。
明確にするために、「41」(2バイトで構成)は、Pythonの「\ x41」(1バイトのみ)と同じではありません。
私の簡単な質問は、文字「41」を取得し、それを「\ x」と結合して「\x41」を形成し、Pythonスクリプトのデータ変数に割り当てて16進値41として送信できるようにする方法です。