查看文章
 
python multicast
2011-09-25 15:32

好久没用用python了,几乎都快忘光了……最近正在学组播,看了一些资料,发现python写组播的小case很方便啊,开始的时候google查的英文资料,结果不知道是比较旧还是什么问题,总是实现不了。今天百度了一下国内资料,尝试了一下,居然成功了。不过原来尝试是在RHEL6上,这次是在fedora14上,不知道有没有这个问题。总之这次代码确实能通过了。

Server :

$ cat multiserv.py 
#!/usr/bin/env python
from socket import *
import struct
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 9998))
mreq = struct.pack("=4sl", inet_aton("224.1.1.1"), INADDR_ANY)
s.setsockopt(IPPROTO_IP, IP_ADD_MEMBERSHIP, mreq)
count = 0
while count < 100:
    f = s.recv(4096)
    print "recv message :", f
    count += 1
s.close()

 

Client :
$ cat multicli.py
#!/usr/bin/env python
from socket import *
import struct
s = socket(AF_INET, SOCK_DGRAM)
s.sendto("Hello World!", ("224.1.1.1", 9998))

 

 

For IPv6 

 

$ cat multiserv.py
#!/usr/bin/env python
from socket import *
import struct
s = socket(AF_INET6, SOCK_DGRAM)
s.bind(('', 9998))
s.setsockopt(IPPROTO_IPV6, IPV6_JOIN_GROUP,
        inet_pton(AF_INET6,"ff02::1234")+'\0'*4)
count = 0
while count < 100:
    data = s.recv(4096)
    print "recv message : ", data
    count += 1
s.close()

 

$ cat multicli.py
#!/usr/bin/env python
from socket import *
import struct
s = socket(AF_INET6, SOCK_DGRAM)
s.sendto("Hello World!", ("ff02::1234", 9998))

参考资料:http://blog.wodeshufang.com/p/python-multicast-receive.html

http://svn.python.org/projects/python/trunk/Demo/sockets/mcast.py


类别:Python||添加到搜藏 |分享到i贴吧|浏览(94)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu