Multicast UDP stop receiving after a while on a raspberry
up vote
0
down vote
favorite
I'm trying to make a Raspberry (on Raspbian) receiving UDP multicast messages. I'm using the following code with Python 3:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("239.0.0.1", 22700))
mreq = struct.pack("4sl", socket.inet_aton("239.0.0.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
data = sock.recv(32).decode("utf8")
# Do stuff with the received data
This code is working fine, I'm receiving the desired packets but after a while, usually 5 minutes, the sock.recv(32)
gets stuck and nothing is received anymore. The exact same code works perfectly on my computer, it's been running for more than an hour now, receiving all packets.
Has anyone been confronted to this on a Raspberry ?
Thanks in advance
python python-3.x raspberry-pi udp multicast
add a comment |
up vote
0
down vote
favorite
I'm trying to make a Raspberry (on Raspbian) receiving UDP multicast messages. I'm using the following code with Python 3:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("239.0.0.1", 22700))
mreq = struct.pack("4sl", socket.inet_aton("239.0.0.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
data = sock.recv(32).decode("utf8")
# Do stuff with the received data
This code is working fine, I'm receiving the desired packets but after a while, usually 5 minutes, the sock.recv(32)
gets stuck and nothing is received anymore. The exact same code works perfectly on my computer, it's been running for more than an hour now, receiving all packets.
Has anyone been confronted to this on a Raspberry ?
Thanks in advance
python python-3.x raspberry-pi udp multicast
1
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling therp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...
– Rémi Rigal
Nov 11 at 16:50
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm trying to make a Raspberry (on Raspbian) receiving UDP multicast messages. I'm using the following code with Python 3:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("239.0.0.1", 22700))
mreq = struct.pack("4sl", socket.inet_aton("239.0.0.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
data = sock.recv(32).decode("utf8")
# Do stuff with the received data
This code is working fine, I'm receiving the desired packets but after a while, usually 5 minutes, the sock.recv(32)
gets stuck and nothing is received anymore. The exact same code works perfectly on my computer, it's been running for more than an hour now, receiving all packets.
Has anyone been confronted to this on a Raspberry ?
Thanks in advance
python python-3.x raspberry-pi udp multicast
I'm trying to make a Raspberry (on Raspbian) receiving UDP multicast messages. I'm using the following code with Python 3:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("239.0.0.1", 22700))
mreq = struct.pack("4sl", socket.inet_aton("239.0.0.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
data = sock.recv(32).decode("utf8")
# Do stuff with the received data
This code is working fine, I'm receiving the desired packets but after a while, usually 5 minutes, the sock.recv(32)
gets stuck and nothing is received anymore. The exact same code works perfectly on my computer, it's been running for more than an hour now, receiving all packets.
Has anyone been confronted to this on a Raspberry ?
Thanks in advance
python python-3.x raspberry-pi udp multicast
python python-3.x raspberry-pi udp multicast
asked Nov 11 at 15:25
Rémi Rigal
994
994
1
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling therp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...
– Rémi Rigal
Nov 11 at 16:50
add a comment |
1
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling therp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...
– Rémi Rigal
Nov 11 at 16:50
1
1
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling the
rp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...– Rémi Rigal
Nov 11 at 16:50
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling the
rp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...– Rémi Rigal
Nov 11 at 16:50
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
This sounds like a typical IGMP problem. These kind of problems are frequent. The typical pattern is that everything works as it should and after some time it stops working.
Some router or switch along the path stops transporting your multicast packets. Look for options in the router to enable/disable IGMP snooping and potentially enable/disable different IGMP versions. Try a different switch. Avoid exotic hardware (like PowerLine adapters).
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
This sounds like a typical IGMP problem. These kind of problems are frequent. The typical pattern is that everything works as it should and after some time it stops working.
Some router or switch along the path stops transporting your multicast packets. Look for options in the router to enable/disable IGMP snooping and potentially enable/disable different IGMP versions. Try a different switch. Avoid exotic hardware (like PowerLine adapters).
add a comment |
up vote
0
down vote
This sounds like a typical IGMP problem. These kind of problems are frequent. The typical pattern is that everything works as it should and after some time it stops working.
Some router or switch along the path stops transporting your multicast packets. Look for options in the router to enable/disable IGMP snooping and potentially enable/disable different IGMP versions. Try a different switch. Avoid exotic hardware (like PowerLine adapters).
add a comment |
up vote
0
down vote
up vote
0
down vote
This sounds like a typical IGMP problem. These kind of problems are frequent. The typical pattern is that everything works as it should and after some time it stops working.
Some router or switch along the path stops transporting your multicast packets. Look for options in the router to enable/disable IGMP snooping and potentially enable/disable different IGMP versions. Try a different switch. Avoid exotic hardware (like PowerLine adapters).
This sounds like a typical IGMP problem. These kind of problems are frequent. The typical pattern is that everything works as it should and after some time it stops working.
Some router or switch along the path stops transporting your multicast packets. Look for options in the router to enable/disable IGMP snooping and potentially enable/disable different IGMP versions. Try a different switch. Avoid exotic hardware (like PowerLine adapters).
answered Nov 18 at 0:31
Johannes Overmann
2,3951021
2,3951021
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53250192%2fmulticast-udp-stop-receiving-after-a-while-on-a-raspberry%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Possible duplicate of Refresh multicast group membership
– Klaus D.
Nov 11 at 15:29
Thank you @KlausD. you are right, the multicast group membership is never refreshed on my Raspberry. Unfortunately I can't get it worked, I tried disabling the
rp_filter
but it doesn't change anything. The only way it works is by calling: sock.setsockopt(socket.IPPROTO_IP, socket.IP_DROP_MEMBERSHIP, mreq) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) but it's ugly...– Rémi Rigal
Nov 11 at 16:50