Найти - Пользователи
Полная версия: Помогите устранить ошибку
Начало » Python для новичков » Помогите устранить ошибку
1
AnatoliyB
 import socket
UDP_IP_TR = "10.0.0.7"
UDP_PORT_TR = 4660
MESSAGE = "Hello, World!"
 
print ("UDP target IP:", UDP_IP_TR)
print ("UDP target port:", UDP_PORT_TR)
print ("message:", MESSAGE)
 
sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP_TR, UDP_PORT_TR))

Я совсем начинающий новичок, на такой текст получаю такую ошибку:
 UDP target IP: 10.0.0.7
UDP target port: 4660
message: Hello, World!
Traceback (most recent call last):
  File "C:\Users\Anatoliy\AppData\Local\Programs\Python\Python35-32\MyProg\proba_tr.py", line 12, in <module>
    sock.sendto(MESSAGE, (UDP_IP_TR, UDP_PORT_TR))
TypeError: a bytes-like object is required, not 'str'

Подскажите,пожалуйста, как её устранить.
py.user.next
AnatoliyB
  
MESSAGE = "Hello, World!"

  
MESSAGE = b"Hello, World!"
AnatoliyB
Большое Вам спасибо! Первый барьер преодолён
AnatoliyB
А как поступить если мне нужно отправить числовой массив?
 a = (127,215,11,83,117)
Чтобы они были отправлены в пакете udp как 5 соответствующих байт (не как символы).
JOHN_16
воспользоваться struct.pack :
 >>> import struct
>>> a = (127,215,11,83,117)
>>> s = struct.pack('{}B'.format(len(a)), *a)
>>> print(s)
b'\x7f\xd7\x0bSu'
py.user.next
  
>>> t = (127, 215, 11, 83, 117)
>>> b = bytes(t)
>>> b
b'\x7f\xd7\x0bSu'
>>>

AnatoliyB
Чтобы они были отправлены в пакете udp как 5 соответствующих байт (не как символы).
По сети символы не передаются, только байты.
AnatoliyB
py.user.next
По сети символы не передаются, только байты.
Так мне же это и нужно было. Спасибо,ребята! Но похоже это не последние вопросы…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB