#!/usr/bin/python3 # -*- coding: utf-8 -*- # -*- mode: Python -*- ''' LJPD Udp server to redis v0.1b ''' import traceback, time import argparse import socket import _thread import redis print() print ("LJPD") print ("Arguments parsing if needed...") argsparser = argparse.ArgumentParser(description="dumpUDP v0.1b help mode") argsparser.add_argument("-i","--IP",help="IP to bind to (0.0.0.0 by default)", type=str) argsparser.add_argument("-p","--port",help="UDP port to bind to (9000 by default)", type=str) argsparser.add_argument("-l","--lj",help="LJ IP address (127.0.0.1 by default)", type=str) args = argsparser.parse_args() # LJ server IP name if args.IP: ljIP = lj.IP else: ljIP = "127.0.0.1" # Server if args.IP: serverIP = args.IP else: serverIP = "0.0.0.0" # ORCA destination device if args.port: UDPORT = int(args.port) else: UDPORT = 8083 print("Connecting to Redis...") r = redis.StrictRedis(host= ljIP, port=6379, db=0) def GetTime(): return time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) def udp_thread(): while True: payload, client_address = sock.recvfrom(1024) udpath = payload.decode('utf_8') print(GetTime(),"From", str(client_address),"got", udpath ) #r.set('/pl/0/0', "/pl/"+str(clientnumber)+"/") #print(udpath[0:1], " ",udpath[1:2], " ",udpath[2:3], " ",udpath[3:4], " " ) # Reply to client bytesToSend = str.encode("ACK :"+str(payload)) serverAddressPort = (client_address, UDPORT) bufferSize = 1024 #sock.sendto(bytesToSend, serverAddressPort) sock.sendto(bytesToSend, client_address) time.sleep(0.005) def Start(serverIP, UDPORT): global sock sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server = ( serverIP,UDPORT) sock.bind(server) _thread.start_new_thread(udp_thread, ()) # Launch server in another thread. print("Launching UDP Server", serverIP,':', UDPORT) Start(serverIP, UDPORT) # Do something else try: while True: time.sleep(0.005) except Exception: traceback.print_exc() finally: print("") print("ljpd stopped.")