udp.py
131 lines
| 2.9 KiB
| text/x-python
|
PythonLexer
|
r24 | # Server program | |
# UDP VERSION | |||
import socket | |||
class Server: | |||
# Set the socket parameters | |||
r51 | #host = "localhost" | ||
host = '192.168.1.255' | |||
port = 5500 | |||
|
r24 | 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 ..." | |||
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 | |||
r25 | #host = '0.0.0.0' | ||
host = '192.168.1.255' | |||
#port = 5140 | |||
port = 5500 | |||
#port = 7000 | |||
|
r24 | buf = 1024 | |
multicast_addr = (host,port) | |||
def __init__(self): | |||
self.createObjects() | |||
def createObjects(self): | |||
# Create socket | |||
r25 | #self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | ||
self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,0) | |||
r52 | self.socket_c.settimeout(0.2) | ||
|
r24 | ||
r52 | # self.socket_c.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 20) | ||
r25 | self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) | ||
|
r24 | def sendData(self): | |
def_msg = "===Enter message to send to server==="; | |||
print "\n", def_msg | |||
# 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,"'....." | |||
r51 | data_rx, server_rx = self.socket_c.recvfrom(16) | ||
|
r24 | ||
r51 | print "Data received ", data_rx, server_rx | ||
|
r24 | ||
# 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) | |||