Python Forum
Threading - RPi server UDP
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Threading - RPi server UDP
#1
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()
Reply
#2
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()
Reply
#3
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
Reply
#4
Haha, must have 'read' that it was in my private messages :) Not at all addressed to me.
Good luck!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Paramiko Server -- Exception (server): Error reading SSH protocol banner ujlain 3 4,511 Jul-24-2023, 06:52 AM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020