Python Forum
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!