I'm trying to broadcast some data and received it using python. This is the code that I came up with.
from socket import *
import threading
class PingerThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run (self):
print 'start thread'
cs = socket(AF_INET, SOCK_DGRAM)
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
cs.sendto('This is a test', ('192.168.65.255', 4499))
a = PingerThread()
a.start()
cs = socket(AF_INET, SOCK_DGRAM)
data = cs.recvfrom(1024) # <-- waiting forever
However, the code seems to wait forever at cs.recvfrom(1024)
. What might be wrong?
Your thread may send its data before you start listening.
Add a loop in your thread to stop the problem
There are three issues in the code.
This is the modified and working code.