繁体   English   中英

Python DUP广播发送器/接收器和广播IP地址功能

[英]Python DUP broadcast sender/receiver and broadcast IP address function

从广播发件人

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个字段; 第一部分是数据,第二部分是数据的来源?

给定本地计算机的IP,以下内容将计算LAN广播地址。 它设置了第四个八位到255,所以主机192.168.1.12会得到192.168.1.255的LAN 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

我不同意johntellsall提供答案 ,该答案仅“将第四个八位位组设置为255”。

您打算正确计算广播地址,它取决于您的网络掩码 ,而不仅取决于IP地址。 某些情况下,它可能归结为将第四个八位位组设置为0xFF

计算广播地址的正确步骤是:

  1. 二进制否定网络掩码
  2. 拍摄效果,然后将其与主机IP地址

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM