Skip to content

Instantly share code, notes, and snippets.

@bhardwajRahul
Created July 24, 2019 20:40
Show Gist options
  • Save bhardwajRahul/9a3a78d5dd52f189fb5cab6e775c6b2f to your computer and use it in GitHub Desktop.
Save bhardwajRahul/9a3a78d5dd52f189fb5cab6e775c6b2f to your computer and use it in GitHub Desktop.
UDP based Multi Threaded Sensor Server to receive data from IOT, Smartphone and other devices.
import socket
import threading
import time
class ThreadedServer(object):
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print(self.host)
def recv(self):
try:
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except AttributeError:
pass
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
self.sock.bind((self.host, self.port))
while True:
server_thread = threading.Thread(target = self.listentoDevice)
server_thread.daemon = True
server_thread.start()
time.sleep(100)
def listentoDevice(self):
size = 8192
while True:
try:
data, address = self.sock.recvfrom(size)
if data:
data = data.decode("utf-8")
print(data)
# Set the response to echo back the recieved data
# response = data
# client.send(response)
else:
raise error("Device Disconnected")
except:
self.sock.close()
return False
if __name__ == "__main__":
while True:
host = input("Enter Host IP")
port_num = input("Enter Port Number")
try:
port_num = int(port_num)
break
except ValueError:
pass
ThreadedServer(host, port_num).recv()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment