Threading - RPi server UDP - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Networking (https://python-forum.io/forum-12.html) +--- Thread: Threading - RPi server UDP (/thread-8515.html) |
Threading - RPi server UDP - KoSik - Feb-23-2018 Hello, I am writing a program with a simple UDP connection. The program starts and when it receives data from the server, it turns off. I need to run it in a loop. I do not know how to check if the thread is ended up to run it again. The While loop does not work because the server must return data. Main program: import serwer, time from threading import Thread threads = [] #t = Thread(target=serwer.server) #threads.append(t) #t.start() class ThreadWithReturnValue(Thread): def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None): Thread.__init__(self, group, target, name, args, kwargs, Verbose) self._return = None def run(self): if self._Thread__target is not None: self._return = self._Thread__target(*self._Thread__args, **self._Thread__kwargs) def join(self): Thread.join(self) return self._return twrv = ThreadWithReturnValue(target=serwer.server) def main(): twrv.start() print twrv.join() if __name__ == '__main__': main()Server: try: import socket, traceback, sqlite3 except ImportError: print "Blad importu" AddrIn = 2323 AddrOut = 2222 def czas(): import time return str(time.strftime("%H:%M")) def data(): import time return str(time.strftime("%d-%m-%Y")) def server(): message, address = s.recvfrom(AddrIn) print data() + " " +czas()+ " " + "Polaczenie %s: %s" % (address, message) if message[0]=='k': print 'costam' transmisja(message, address) return message def transmisja(messag, adres): if(messag=='temp'): s.sendto('temp2345', adres) if(messag=='wilg'): s.sendto('wilg1111', adres) if(messag=='woda'): s.sendto('woda2222', adres) if(messag=='slon'): s.sendto('slon3333', adres) if(messag=='zasi'): s.sendto('zasi4444', adres) #-------------START--------------------------- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.bind(('', AddrOut)) #while True: # server() RE: Threading - RPi server UDP - KoSik - Feb-25-2018 import serwer, time from threading import Thread threads = [] #t = Thread(target=serwer.server) #threads.append(t) #t.start() class ThreadWithReturnValue(Thread): def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None): Thread.__init__(self, group, target, name, args, kwargs, Verbose) self._return = None def run(self): if self._Thread__target is not None: self._return = self._Thread__target(*self._Thread__args, **self._Thread__kwargs) def join(self): Thread.join(self) return self._return def main(): twrv = ThreadWithReturnValue(target=serwer.server) twrv.start() while(1): if twrv.isAlive(): print twrv.join() if not twrv.isAlive(): twrv = ThreadWithReturnValue(target=serwer.server) twrv.start() if __name__ == '__main__': main() RE: Threading - RPi server UDP - CaptainBlueballs - Feb-25-2018 Hi KoSik, Did you mean to sent it to me? Because Im fairly new to python and this is a little above my skills at the moment. Good luck, S RE: Threading - RPi server UDP - CaptainBlueballs - Feb-26-2018 Haha, must have 'read' that it was in my private messages :) Not at all addressed to me. Good luck! |