Как я могу отправить что-либо кроме строк через Python sock.send () - PullRequest
10 голосов
/ 18 января 2012

Я очень новичок в программировании на Python, но из-за необходимости мне пришлось очень быстро взломать что-то вместе.

Я пытаюсь отправить некоторые данные по UDP, и у меня все работает, за исключением того факта, что когда я выполняю socket.send (), я должен вводить данные в виде строки. Вот моя программа, чтобы вы могли видеть, что я делаю:

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

Как я могу получить его, чтобы я мог сделать что-то в шестнадцатеричном виде, например, s.send (ff: 23: 25: a1), чтобы при просмотре части данных пакета в Wireshark я видел : 23: 25: a1

1 Ответ

14 голосов
/ 18 января 2012

Используете ли вы Python 2.7 или 3.2?

В 3.2 вы можете сделать:

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

В таком случае данные будут равны:

b'\x01\xAF\x23'

В 2.7то же самое можно сделать с помощью:

data = '01AF23'.decode('hex')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...