2012-01-18 13 views
7

Soy muy nuevo en la programación en Python, pero por necesidad tuve que hackear algo muy rápido.¿Cómo puedo enviar cualquier cosa que no sea cadenas a través de Python? Sock.send()

Estoy tratando de enviar algunos datos a través de UDP, y tengo todo funcionando, excepto por el hecho de que cuando hago socket.send(), tengo que ingresar los datos en forma de cadena. Aquí está mi programa para que pueda ver lo que estoy haciendo:

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() 

cómo podría conseguir que por lo que yo puedo hacer algo en hexadecimal como s.send (FF: 23: 25: A1), por ejemplo, por lo que cuando miro la porción de datos del paquete en Wireshark, veo ff: 23: 25: a1

Respuesta

12

¿Estás usando Python 2.7 o 3.2?

En 3.2 se podría hacer:

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

de datos sería entonces igual a:

b'\x01\xAF\x23' 

En 2.7 el mismo podría lograrse con:

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

Muchas gracias, ¡Estoy usando Python 2.7 y tu sugerencia hizo el truco! – Adam

Cuestiones relacionadas