2016-03-01 3 views
1

Здесь транслируются сервераНе удается получить UDP вещания в питоне

from time import sleep 
from socket import * 

PORT = 50000 
s = socket(AF_INET, SOCK_DGRAM) 
s.bind(('', 0)) 
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) 

data = "I am server" 
while 1: 
    s.sendto(data, ('<broadcast>', PORT)) 
    print "sent data" 
    sleep(5) 

Здесь транслируются приемник

from socket import socket, AF_INET, SOCK_DGRAM 
PORT = 50000 
client = socket(AF_INET, SOCK_DGRAM) 
client.bind(('0.0.0.0', PORT)) 
data, addr = s.recvfrom(1024) #sticks here forever! 

if data: 
    print "Found Broadcast server at : " + addr 

Но проблема в том, что мой приемник просто прилипает на s.recvfrom(1024) Хотя через ТСРйитр я могу чтобы увидеть пакет, то почему этот клиент python не может его поймать? команда sudo tcpdump -i wlan0 ip -X dst host 255.255.255.255

ответ

-3

Перед привязкой вам необходимо установить параметры сокета, и вам необходимо привязать его к INADDR_BROADCAST.

+0

Возможно, вы предлагаете какие-либо изменения в коде? –

+0

@AbhishekSingh, я не буду писать код для вас. Полагаю, мои предложения ясны. – SergeyA

+1

Скажите хотя бы, какие параметры мне нужно настроить для сокета, а для сервера я уже настроил параметры сокета –

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