2012-01-30 30 views
1

我想在廣播中發送UDP消息,除了ip=123.123.123.123有沒有什麼辦法可以做到這一點?如何在UDP中進行部分廣播?

我應該如何修改這個代碼:

MYPORT = 8080 

import sys, time 
from socket import * 

s = socket(AF_INET, SOCK_DGRAM) 
s.bind(('', 0)) 
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) 

while 1: 
    data = 'python is awesome' + '\n' 
    s.sendto(data, ('<broadcast>', MYPORT)) 
    time.sleep(2) 
+0

不,你不能從一個範圍中排除一個IP。但你可以做兩個廣播到兩個不同的範圍,排除一個IP。 – 2012-01-30 20:43:29

+1

@MarcB:你甚至不能這樣做。沒有「廣播到一個範圍」這樣的東西。 – 2012-01-30 20:51:39

回答

1

當你發送一個廣播IP數據包,只有一個從發送方機發送數據包。沒有辦法確定誰收到它,因爲每臺機器都在同一個網絡上接收它。

基本的IP數據包的尋址有兩種選擇:

  • 發送到單個IP地址
  • 發送到子網廣播地址

您可以使用"multicasting"解決你的問題,但這是相當複雜的。