为什么我只能使用“”绑定,而不能使用IP地址?

2024-06-07 18:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

严格依据:

How do you UDP multicast in Python?

import socket
import struct

MCAST_GRP = '233.3.3.3'
MCAST_PORT = 12312
IS_ALL_GROUPS = True

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if IS_ALL_GROUPS:
    # on this port, receives ALL multicast groups
    sock.bind(('', MCAST_PORT))
else:
    # on this port, listen ONLY to MCAST_GRP
    sock.bind((MCAST_GRP, MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while True:
  print sock.recv(10240)

我使用VLC流式传输视频。 但是,我只能使用IS_ALL_GROUPS = True进行绑定。每当我想通过IS_ALL_GROUPS = False绑定时,我都会得到WinError 10049:请求的地址在其上下文中无效。 当我尝试使用相同的发送方和接收方脚本时,但在linux上没有这样的错误。 在这种情况下我能做什么


Tags: importtrueisportsocketallstructsock

热门问题