簡體   English   中英

如何使用套接字編程發送UDP數據/數據包而不使用python將其轉換為字節?

[英]how to send UDP data/packet using Socket programming without converting it into bytes using python?

我嘗試創建一個 UDP 套接字並成功創建了一個。 現在,當我嘗試發送一些原始數據時, socket.send要我將其轉換為字節。 但是這個原始數據是改變我正在處理的應用程序時間的命令,所以我想按原樣發送數據。 有沒有辦法在不將其轉換為字節的情況下發送它?

這是我使用的代碼:

Socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
bufferSize = 1024
recvBuf = 4096           
new_pkt= x00\x1c\x7fb\xb5\xfd\x00PV\xb8\x08\x9f\x08\x00E\x00\x000B\xad\x00\x00\x80\x11\x00\x00\n\xe7\xa0\xc6\n\xe7\x922\xc0\xb8\x05\xdc\x00\x1cH\xf4\t\x8d\x01\x00\x01\x01\x00\x10\x00\x00\x01,\x00\x00\x00\x004\xe6\xc0
S = Socket.connect_ex(("10.231.146.50",port))    
Socket.settimeout(10)   

Res = Socket.sendall(new_pkt)

Socket.close

在嘗試發送數據包時,獲得了將數據包轉換為字節的錯誤

Python2.7沒有錯誤,對於 send 或 sendall,如果我在你的數據字符串周圍加上雙引號

new_pkt= "x00\x1c\x7fb\xb5\xfd\x00PV\xb8\x08\x9f\x08\x00E\x00\x000B\xad\x00\x00\x80\x11\x00\x00\n\xe7\xa0\xc6\n\xe7\x922\xc0\xb8\x05\xdc\x00\x1cH\xf4\t\x8d\x01\x00\x01\x01\x00\x10\x00\x00\x01,\x00\x00\x00\x004\xe6\xc0"

試一試 ;-)

如果您使用Python3.x ,則需要字節。 所以你只需用b前綴你的字符串:

new_pkt_for_py3 = b"x00\x1c\x7fb\xb5\xfd...."

暫無
暫無

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

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