如何让UDP pub / sub在mac osx上运行?

时间:2015-06-16 01:38:13

标签: python macos sockets udp

我有一个简单的发布/订阅系统,可以使用UDP套接字在Linux上运行,但在Mac OS X(特别是10.10.3)上不起作用。有什么我可以改变以允许它在我的Mac上工作吗?

pub.py:

import sys
import socket
sender = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sender.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while True:
    line = sys.stdin.readline()
    if not line: break
    sender.sendto(line,("127.255.255.255",4321))

sub.py:

import sys
import socket
receiver = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
receiver.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
receiver.bind(('',4321))
while True:
    data,addr = receiver.recvfrom(1500)
    sys.stdout.write(data)

要运行它,我在不同的窗口中启动sub.py的多个实例。在一个窗口中,我启动pub.py并将东西输入stdin(按回车键),它会显示在两个收件人身上。它适用于最新版本的Linux Mint和Centos。

1 个答案:

答案 0 :(得分:2)

这是127.255.255.255127.0.0.1工作正常。

Mac OS X的环回接口doesn't support broadcasts