2016-06-03 3 views
3

Я искал этот вопрос, но я не мог понять вопрос, так как он не был вообще общим, я бы не нашел решение для чтения UDP-пакетов, содержащих текст UTF-8 для пример.Socket: Чтение UDP-пакета

Так я сделать сокет, что делает пакет UDP, содержащий UTF-8 текст, и я посылаю это так:

import socket 

UDP_IP = "127.0.0.1" 
UDP_PORT = 80 
MESSAGE = "Hello, World!" 

sock = socket.socket(socket.AF_INET, 
      socket.SOCK_DGRAM) 
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT)) 

Позволяет определить это как sender.py.

Теперь я хочу создать скрипт reciever.py, который будет выполнен после sender.py.

Как я могу это сделать? Я слышал о Data, addr = udp.recvfrom(1024), но я не совсем уверен, как это работает/как его использовать.

Таким образом, всякий раз, когда я выполняю их вместе, Reciever.py может печатать UTF-8 текст отправленного пакета UDP.

ответ

2

Вы хотите приемник сделать несколько вещей:

  1. Создание сокета sock с помощью socket.socket.
  2. Привязать к розетке с помощью sock.bind.
  3. В бесконечном цикле выполните: data, addr = sock.recvfrom(1024).
  4. Теперь полученные данные доступны для вашего использования, и вы можете обрабатывать их по своему усмотрению.

Обратите внимание, что приемник будет спать, пока не появится сообщение, в которое он привязан. После обработки данных цикл будет выполняться еще раз, и приемник снова заснет.

1024 соответствует максимальному размеру сообщение, которое вы можете получить (около 1024 символов, так как 1 символа = 1 байт. Если вы хотите, чтобы иметь возможность получать большие сообщения, сделать это значение больше.

См https://wiki.python.org/moin/UdpCommunication для Детальный пример кода.

+1

Спасибо! – ShellRox

Смежные вопросы