|
|
# 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)
|
|
|
|
|
|
|
|
|
|