Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 31, 2016 09:12:08

AnatoliyB
Зарегистрирован: 2016-10-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

 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'

Подскажите,пожалуйста, как её устранить.

Офлайн

#2 Окт. 31, 2016 12:24:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

AnatoliyB
  
MESSAGE = "Hello, World!"

  
MESSAGE = b"Hello, World!"



Офлайн

#3 Окт. 31, 2016 12:54:35

AnatoliyB
Зарегистрирован: 2016-10-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

Большое Вам спасибо! Первый барьер преодолён

Офлайн

#4 Окт. 31, 2016 15:48:46

AnatoliyB
Зарегистрирован: 2016-10-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

А как поступить если мне нужно отправить числовой массив?

 a = (127,215,11,83,117)
Чтобы они были отправлены в пакете udp как 5 соответствующих байт (не как символы).

Офлайн

#5 Окт. 31, 2016 16:26:44

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

воспользоваться struct.pack :

 >>> import struct
>>> a = (127,215,11,83,117)
>>> s = struct.pack('{}B'.format(len(a)), *a)
>>> print(s)
b'\x7f\xd7\x0bSu'



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Окт. 31, 2016 16:30:23)

Офлайн

#6 Окт. 31, 2016 20:31:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

  
>>> t = (127, 215, 11, 83, 117)
>>> b = bytes(t)
>>> b
b'\x7f\xd7\x0bSu'
>>>

AnatoliyB
Чтобы они были отправлены в пакете udp как 5 соответствующих байт (не как символы).
По сети символы не передаются, только байты.



Отредактировано py.user.next (Окт. 31, 2016 20:32:55)

Офлайн

#7 Ноя. 1, 2016 10:38:30

AnatoliyB
Зарегистрирован: 2016-10-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите устранить ошибку

py.user.next
По сети символы не передаются, только байты.
Так мне же это и нужно было. Спасибо,ребята! Но похоже это не последние вопросы…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version