# UDP マルチキャストの例、Hugo Vincent、2005-05-14。 🎜>インポートソケット
def send(data, port=50000, addr='239.192.1.100'):
"""send(data[, port[, addr]]) - UDP をマルチキャストしますdatagram." ""
# ソケットを作成します
s =ソケット.socket(socket.AF_INET,ソケット.SOCK_DGRAM)
# ソケットをマルチキャスト対応にし、TTLを設定します。
s.setsockopt (socket.IPPROTO_IP,socket.IP_MULTICAST_TTL, 20) # TTL (=20) を変更して
# データを送信
s.sendto(data, (addr, port))
def recv (port= 50000, addr="239.192.1.100", buf_size=1024):
"""recv([port[, addr[,buf_size]]]) - データグラムを待機し、データを返します。"" "
# ソケットを作成します
s =ソケット.socket(socket.AF_INET,ソケット.SOCK_DGRAM)
# マルチキャスト対応にするためにいくつかのオプションを設定します
s.setsockopt (socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
try:
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,1)
以外 AttributeError:
pass #一部のシステムはサポートしていませんSO_REUSEPORT
s.setsockopt(socket.SOL_IP,ソケット.IP_MULTICAST_TTL, 20)
s.setsockopt(socket.SOL_IP,ソケット.IP_MULTICAST_LOOP, 1)
# ポート
s にバインドします.bind( ('', port))
# さらにマルチキャスト オプションを設定します。
intf =ソケット.gethostbyname(socket.gethostname())
s.setsockopt(socket.SOL_IP,ソケット. IP_MULTICAST_IF, ソケット .inet_aton(intf) +ソケット.inet_aton('0.0.0.0'))
s.setsockopt(ソケット.SOL_IP, ソケット.IP_ADD_MEMBERSHIP, ソケット.inet_aton(addr) + ソケット.inet_aton('0.0.0.0 '))
# データを受信し、マルチキャスト受信メンバーシップの登録を解除して、ポートを閉じます。
data, sender_addr = s.recvfrom(buf_size)
s.setsockopt(socket.SOL_IP,ソケット. IP_DROP_MEMBERSHIP、socket .inet_aton(addr) +ソケット.inet_aton('0.0.0.0'))
s.close()
戻りデータ
コードをコピー コードは次のとおりです: #!/usr/bin/env python
fromソケットインポート *from time import sleep,time, ctime
HOST = '229.0.0.15'PORT = 9999BUFSIZ = 1024ADDR = (HOST, PORT)
udpCliSock = ソケット(AF_INET, SOCK_DGRAM)
data = 't'*200count = 0while(countudpCliSock.close()