2012-01-18 5 views
7

Sono molto nuovo alla programmazione in Python, ma per necessità ho dovuto modificare qualcosa molto rapidamente.Come posso inviare qualcosa di diverso dalle stringhe tramite Python sock.send()

Sto cercando di inviare alcuni dati su UDP, e ho tutto funzionante tranne per il fatto che quando faccio socket.send(), devo inserire i dati in forma di stringa. Qui è il mio programma in modo da poter vedere quello che sto facendo:

import socket 


IPADDR = '8.4.2.1' 
PORTNUM = 10000 

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) 

s.connect((IPADDR, PORTNUM)) 

s.send('test string'.encode('hex')) 

s.close() 

Come potrei farlo in modo che io possa fare qualcosa in esadecimale come s.send (ff: 23: 25: a1) per esempio, in modo che quando guardo la porzione di dati del pacchetto in Wireshark, vedo ff: 23: 25: a1

risposta

12

Stai usando Python 2.7 o 3.2?

In 3.2 si poteva fare:

data = bytes.fromhex('01AF23') 
s.send(data) 

dati sarebbe allora pari a:

b'\x01\xAF\x23' 

Nella 2.7 lo stesso potrebbe essere realizzato con:

data = '01AF23'.decode('hex') 
+0

Grazie mille, Sto usando Python 2.7 e il tuo suggerimento ha fatto il trucco! – Adam