Created
July 24, 2019 20:40
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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