2016-03-01 162 views
1

这里是广播服务器无法接收UDP广播在Python

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) 坚持,同时通过tcpdump的,我能够看到数据包,那么为什么这个python客户端无法捕捉它呢? 命令是sudo tcpdump -i wlan0 ip -X dst host 255.255.255.255

回答

-3

您需要在绑定它之前设置套接字选项,并且您需要将它绑定到INADDR_BROADCAST。

+0

您能否建议更改代码? –

+0

@AbhishekSingh,我不会为你写代码。我相信,我的建议很明确。 – SergeyA

+1

至少告诉我需要什么选项来设置套接字,并且对于服务器我已经设置了套接字选项 –