'How can I send anything other than strings through Python sock.send()

I'm very very new to programming in Python, but out of necessity I had to hack something together very quick.

I am trying to send some data over UDP, and I have everything working except for the fact that when I do socket.send(), I have to enter the data in string form. Here is my program so you can see what I am doing:

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

How could I get it so that I can do something in hexadecimal like s.send(ff:23:25:a1) for example, so that when I look at the data portion of the packet in Wireshark, I see ff:23:25:a1



Solution 1:[1]

You can send the hex values by first forming a list of hex values like below:

hex_list = [0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00]

then, send them as bytes:

s.sendto(bytes(hex_list), addr1)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 RiveN