Social Icons

twitterfacebookgoogle plusemail

martes, 12 de febrero de 2013

Tarea 1: Sockets con UDP

La idea es crear un sistema de notificaciones a partir de una subscripción con la opción de cancelar la subscripción. Para realizar esta tarea se optaron por crear reportes y cuando recibe un reporte de una categoría el que ha sido subscrito, recibirá una notificación.

from struct import Struct
from binascii import hexlify
import socket
from sys import argv
subscripciones = {}
def server(host, puerto):
global subscripciones
s = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
s.bind( ( host, puerto ) )
while True:
desempaque = Struct('25s')
datos, addr = s.recvfrom( desempaque.size )
desempaque = desempaque.unpack(datos)
if str(desempaque[0:1]) == '01':
print "Subscripcion"
subscripciones[addr] = desempaque[3:8]
print subscripciones
print "host:", addr[ 0 ]
print "puerto:", addr[ 1 ]
print "Desempaque: ",desempaque
#print "\t" + desempaque
s.sendto( datos, addr )
print "Se enviaron paquetes."
s.close()
def client(host, puerto):
s = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
while True:
#datos = "hola"
m = "01.Asalto.123,000.-10,000"
datos = Struct('25s')
datos = datos.pack(m)
print "Esto envie: ",datos
s.sendto( datos, ( host, puerto ) )
datos, addr = s.recvfrom( 1024 )
print "Paquete recibido:"
print "Desde el host:", addr[ 0 ]
print "puerto:", addr[ 1 ]
print "Contiene:"
print "\t" + datos + "\n"
s.close()
def main():
try:
host = argv[2]
except:
host = "127.0.0.1"
try:
puerto = int(argv[3])
except:
puerto = 5000
print argv[1]
if argv[1] == "server":
server(host, puerto)
if argv[1] == "client":
client(host, puerto)
print "Especifica si eres server o cliente."
main()


En realidad no salió la tarea, pero esto fue lo que logre hacer.

1 comentarios: