来自广播发送者
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
1) 这是一个广播发送者,我不知道findbroadcastaddr函数,基本上如果我的网络地址是192.1.3.0那么我的广播地址将是192.1.3.255。任何人都知道这个功能。
广播接收器 我
mport socket
# Set the socket parameters
addr = ('', 33333) # host, port
# Create socket and bind to address
UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
UDPSock.bind(addr)
# Receive messages
while True:
data, addr = UDPSock.recvfrom(1024)
2)1024是可以接收的最大字节数。 recvfrom的结果分解为2个字段;第一部分是数据,第二部分是来自哪里?
答案 0 :(得分:2)
以下计算给定本地计算机IP的LAN广播地址。它将第4个八位字节设置为255,因此 192.168.1.12 上的主机将获得 192.168.1.255
的LAN广播IPfrom 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
答案 1 :(得分:0)
我不同意answer provided by johntellsall,它只是“将第四个八位字节设置为255”。
您打算正确计算广播地址,这取决于您的网络掩码而不仅仅是您的IP地址。在某些情况下,可能会将第4个八位字节设置为 0xFF 。
计算广播地址的正确步骤是: