Я пытаюсь передать видео с веб-камеры, установленной на BeagleBoneBlack (устройство Linux), на сервер (сервер Windows). BeagleBone подключается к Интернету с использованием DHCP (динамический IP) и в основном отправляет UDP-пакет на сервер. На стороне сервера я реализовал простую программу python, используя сокеты, которые должны легко читать UDP-пакет, поступающий с определенного IP-адреса или на определенный порт. В wirehark я могу видеть пакеты, поступающие на сервер, но программа python не может их поймать. Я пытался прослушивать разные IP-адреса, такие как «localhost» или конкретный IP-адрес, но ничего не работает.Невозможно прочитать UDP-пакеты на сервере с помощью Python
Python на стороне сервера программы:
import socket
IP = '192.168.23.240' #IP of the BeagleBone on Wireshark
IP = '109.164.170.155' #IP of the router in which the BeagleBone is attached
IP = '0.0.0.0' #localhost
IP = '' #localhost
IP = '192.168.0.21' #IP localhost server
IP = 'localhost' #localhost
PORT = 5454
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((IP,PORT))
f = open('file.mp4','wb')
data, addr = s.recvfrom(4096)
print 'Receiving from: ' +str(addr)
for i in xrange(1000):
f.write(data)
data, addr = s.recvfrom(4096)
print 'receiving from ' + str(addr) + ' ...'
f.close()
s.close()
В Wireshark стороне сервера:
Как это возможно, что я могу прочитать пакеты в Wireshark, но не с помощью простого питона программа? Кто-то знает, что я делаю неправильно здесь?
Да, программа как прослушивает localhost, но я также пробовал IP, например 127.0.0.1 или IP Beaglebone: 192.168.23.240, который дал мне ошибку «[Errno 10049]» Запрашиваемый адрес недействителен его контекст ». В UDP может быть межсетевой экран, но я не понимаю, почему wirehark может их читать. Кстати, я знаю, что отправка файла с использованием UDP не самая лучшая, но я просто тестировал соединение. – lcit