簡體   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