我有一个使用python脚本通过多播通信的服务器和客户机。当我把我的脚本放在同一台计算机上时,它们的行为是适当的;即它们可以在彼此之间发送和接收数据。计算机正在运行Windows 10。在
当我把一个脚本放在计算机上,一个脚本放在raspberry pi上时,我的计算机除了自己发送的消息外,不会接收任何多播。树莓派接收一切。在
有人能告诉我为什么我的电脑没有收到来自树莓派的数据吗?我可能需要在我的计算机上启用某个设置,或者我需要在脚本中配置某个设置?在
我使用的代码如下:
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")
目前没有回答
相关问题 更多 >
编程相关推荐