1. 程式人生 > >python-組播

python-組播

div col nal ive prot ppr Coding req pre

 1  #!/usr/bin/python 
 2 #coding=utf-8
 3 #發送端
 4 import sys,struct,socket
 5 from time import sleep
 6 
 7 message="hello"
 8 message1="nihao"
 9 
10 multicast_group=(224.3.29.73,10003)
11 multicast_group1=(224.3.29.74,10004)
12 
13 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
14 
15 sock.timeout(3)
16 17 ttl=struct.pack(b,1) #將數字1轉換成無符號字符類型.在python中沒有這種類型,但是內核需要,所以轉換 18 19 sock.setsockopt(socket.IPPROTO_IP,socket.IP_MULTICAST_TTL,ttl) 20 21 try: 22 while 1: 23 sleep(2) 24 sent=sock.sendto(message,multicast_group) 25 sent=sock.sendto(message1,multicast_group1) 26
27 print >>sys.stderr,"waiting to receive" 28 29 try: 30 data,server=sock.recvfrom(1024) 31 except sock.timeout: 32 print >>sys.stderr,"time out ,no more response" 33 break 34 else: 35 print >>sys.stderr,"
received %s from %s"%(data,server) 36 finally: 37 print >>sys.stderr,"closing socket" 38 sock.close()

 1 #!/usr/bin/python
 2 #接收端
 3 import socket
 4 import sys
 5 import struct
 6  
 7 multicast_group = 224.3.29.72
 8 server_address = (‘‘,10001)
 9  
10 sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
11  
12 sock.bind(server_address)
13  
14 group = socket.inet_aton(multicast_group)
15 mreq = struct.pack(4sL,group,socket.INADDR_ANY)
16 sock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,mreq)
17  
18 while True:
19     print >>sys.stderr,\nwaiting to receive message
20     data,address = sock.recvfrom(1024)
21  
22     print >>sys.stderr,received %s bytes from %s%(len(data),data)
23     print >>sys.stderr,sending acknowledgement to,address
24     sock.sendto(gaozhiqiangf,address)
25  

python-組播