##// END OF EJS Templates
testing threading
testing threading

File last commit:

r52:53
r159:160
Show More
udp.py
131 lines | 2.9 KiB | text/x-python | PythonLexer
# Server program
# UDP VERSION
import socket
class Server:
# Set the socket parameters
#host = "localhost"
host = '192.168.1.255'
port = 5500
buf = 1024
addr = (host,port)
def __init__(self):
self.createObjects()
def createObjects(self):
# Create socket and bind to address
self.sock_s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock_s.bind(self.addr)
def listen(self):
# Receive messages
print "Server initialized ..."
print
while 1:
data_rx, addr_rx = self.sock_s.recvfrom(self.buf)
if not data_rx:
print "Client has exited!"
break
print "\nSERVER:"
print "Received message '", data_rx,"'"
print "Sendinf ack ..."
self.sock_s.sendto('ack', addr_rx)
# Close socket
self.sock_s.close()
def start(self):
self.listen()
class Client:
# Set the socket parameters
#host = '0.0.0.0'
host = '192.168.1.255'
#port = 5140
port = 5500
#port = 7000
buf = 1024
multicast_addr = (host,port)
def __init__(self):
self.createObjects()
def createObjects(self):
# Create socket
#self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,0)
self.socket_c.settimeout(0.2)
# self.socket_c.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 20)
self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
def sendData(self):
def_msg = "===Enter message to send to server===";
print "\n", def_msg
print
# Send messages
while (1):
print "\nCLIENT"
data = raw_input('>> ')
if not data or data == 'q':
break
if(self.socket_c.sendto(data, self.multicast_addr)):
print "Sending message '",data,"'....."
data_rx, server_rx = self.socket_c.recvfrom(16)
print "Data received ", data_rx, server_rx
# Close socket
self.socket_c.close()
def start(self):
self.sendData()
import threading
class MiThread(threading.Thread):
def __init__(self, obj):
threading.Thread.__init__(self)
self.obj = obj
def run(self):
self.obj.start()
if __name__ == '__main__':
serverObj = Server()
clientObj = Client()
ts = MiThread(serverObj)
tc = MiThread(clientObj)
ts.start()
tc.start()
tc.join()
ts.join(60)