Python DUP广播发送器/接收器和广播IP地址函数
来自广播发送方Python DUP广播发送器/接收器和广播IP地址函数,python,udp,Python,Udp,来自广播发送方 import socket, traceback host = '' # Bind to all interfaces port = 51423 broadcastaddr=findbroadcastaddr(); addr=(broadcastaddr, port) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sets
import socket, traceback
host = '' # Bind to all interfaces
port = 51423
broadcastaddr=findbroadcastaddr();
addr=(broadcastaddr, port)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #broadcasr
data='hello from sender'
s.bind('', port) #socket binding to any host
s.sendto(data, addr):
s.close
(一)
这是一个广播发送器,我不知道findbroadcastaddr函数,基本上如果我的网络地址是192.1.3.0,那么我的广播地址将是192.1.3.255。任何人都知道这个功能
广播接收机
我
2) 1024是可以接收的最大数据字节数。recvfrom的结果分为两个字段;第一部分是数据,第二部分是数据的来源?以下计算给定本地机器IP的LAN广播地址。它将第四个八位字节设置为255,因此192.168.1.12上的主机将获得192.168.1.255的局域网广播IP
from socket import *
myip = gethostbyname(gethostname())
print 'My IP',myip
# XX: assumes /24 address
broadip = inet_ntoa( inet_aton(myip)[:3] + b'\xff' )
print 'LAN broadcast', broadip
我不同意这个说法,它只是“将第四个八位组设置为255”
如果要正确计算广播地址,它取决于您的网络掩码,而不仅仅是您的IP地址。在某些情况下,可以归结为将第四个八位字节设置为0xFF
计算广播地址的正确步骤如下:
from socket import *
myip = gethostbyname(gethostname())
print 'My IP',myip
# XX: assumes /24 address
broadip = inet_ntoa( inet_aton(myip)[:3] + b'\xff' )
print 'LAN broadcast', broadip