【发布时间】:2016-03-01 13:55:40
【问题描述】:
这里是广播服务器
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)
请注意,您需要将'<broadcast>' 更改为您网络的实际广播地址。请看Python can't send a broadcast package with address
这里是广播接收器
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
【问题讨论】:
标签: python sockets network-programming broadcast