我有一个服务器和客户端使用python脚本通过多播进行通信。当我将脚本放在同一台计算机上时,它们表现得很合适;也就是说,他们可以在彼此之间发送和接收数据。计算机正在运行Windows 10。
当我在计算机上放置一个脚本而在树莓派上放置一个脚本时,我的计算机除了它自己发送的消息外没有收到任何多播。树莓派收到了所有东西。
有谁能告诉我为什么我的电脑没有从树莓派中接收数据?我的计算机上可能有一个设置需要启用,或者我需要在脚本中配置一些东西?
我使用的代码如下:
import socket
import struct
MCAST_GRP = '224.1.1.1'
MCAST_PORT = 5007
def _send_socket(message):
# Create socket to send validation on shooting
send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
dev = "eth0" + "\0"
#sock2.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, dev)
send_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
send_socket.sendto(message, (MCAST_GRP, MCAST_PORT))
send_socket.close()
def _recv_socket(recieve_socket):
data = recieve_socket.recv(10240)
return data
def run():
recieve_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
recieve_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
recieve_socket.bind(('', MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
recieve_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while(True):
data= _recv_socket(recieve_socket)
if data:
_send_socket("Sending something back")