Я использовал следующий код для получения потока данных UDP от отправителя в моей сети:
import socket
import datetime
## Configs
UDP_IP = "169.254.67.186"
UDP_PORT = 5606 #PC1 uses 5606
## Creating socket object
sock = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM) #AF_INET specifies that IPs are going to be used. #DGRAM specifies that it is going to be under UDP
address = (UDP_IP, # IP Address
UDP_PORT) # Port of that IP
sock.bind(address)
## Progrma startup message
timestamp = datetime.datetime.now().time()
print("Initiating data print at:",timestamp)
print("-------------------------------------------")
i = 1
## Initiates loop to 'listen'
while i < 10:
# Function to recieve data
data,senderaddr = sock.recvfrom(10240000) # Argument is the buffer size (maximum size of data being received at once). # Two outputs are given, the "data" output and the "address from senders" output.
print("Streaming:",data)
i = i + 1
Это все еще в период тестирования, поэтому я получаю только 10пакеты данных и окончание цикла while.В любом случае, начало переменной 'data' в настоящее время:
Начало значений переменных 'data'
Это в основном формат, который я получаю изпоток.Оглядываясь вокруг, я узнал, что это буквальная байтовая переменная Python 3 (я использую P3), и есть несколько способов декодировать ее в полезные строки, которые не сработали, такие как
Метод 1:
str(data, 'utf-8')
Traceback (последний вызов был последним): файл "", строка 1, в UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xd3 в позиции 0: недопустимый байт продолжения
Метод 2:
import binascii
data.decode("utf-8")
Traceback (последний вызов был последним): файл "", строка 1, в UnicodeDecodeError: 'кодек utf-8' может 't декодировать байт 0xd3 в позиции 0: недопустимый байт продолжения
Ничто из этого мне не помогло.Я заметил, что этот формат b "\ xx0 \ x00 \ xx0 \ x00 \ x00 \ x00 ... не является распространенным примером, используемым для преобразования буквенных байтов. В найденных темах люди используют больше формат b "abcdef" , чтобы описать их проблему (без обратной косой черты, которая, кажется, разделяет отдельные символы), поэтому я думаю, что я мог бы что-то здесь упустить. Имеет смысл думать, что методы, которые я пытаюсь использовать, являютсянеправильные из-за этой части сообщений об ошибках:
кодек не может декодировать байт 0xd3 в позиции 0: недопустимый байт продолжения
Итак, не могли бы вы, ребята,Помогите мне сказать, что мне здесь не хватает?
Спасибо