Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DUP广播发送器/接收器和广播IP地址函数_Python_Udp - Fatal编程技术网

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

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

  • 二进制对网络掩码求反
  • 获取结果,然后将其与主机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