Skip to content

Instantly share code, notes, and snippets.

@pepgonzalez
Created April 25, 2013 04:55
Show Gist options
  • Save pepgonzalez/5457583 to your computer and use it in GitHub Desktop.
Save pepgonzalez/5457583 to your computer and use it in GitHub Desktop.
import random
import socket as s
import pickle
import time
class Paquete:
def __init__ (self, header, numeroPaquete, totalPaquetes, contenido):
self.header = header
self.numeroPaquete = numeroPaquete
self.totalPaquetes = totalPaquetes
self.contenido = contenido
def generaMensaje():
largo = random.randrange(1,500)
mensaje = ""
for i in range(largo):
mensaje += chr(int(random.randrange(32,126)))
return mensaje
def obtenerValorBinario(mensaje):
res = ''
for e in mensaje:
res += bin(int(ord(e)))[2:]
return res
def generaPaquete(header, numeroPaquete, total_paquetes, contenido):
paquete = Paquete(header, numeroPaquete, total_paquetes, contenido)
return paquete
def getLista(msj):
l = list()
for e in msj:
l.append(e)
return l
def enviaPaquetes(paquetes):
socket = s.socket(s.AF_INET, s.SOCK_DGRAM)
for p in paquetes:
buffer_clase = pickle.dumps(p)
socket.sendto(buffer_clase,("127.0.0.1",9001))
print "Envie paquete.."
time.sleep(int(random.randrange(1,10)))
print "paquetes Enviados Satisfactoriamente"
def main():
paquetes = list()
mensaje = generaMensaje()
#mensaje = "Hola a todos, esto es un parrafo de prueba, para validar el funcionamiento del proceso de compresion dinamico. Saludos!"
len_mensaje = len(mensaje)
mensajeBinario = obtenerValorBinario(mensaje)
len_mensajeBin = len(mensajeBinario)
print "Mensaje: "
print mensaje
print "larg cadena"
print len_mensaje
#print "Cadena binaria: "
#print mensajeBinario
#print "largo msj original: "
#print len_mensajeBin
total_paquetes = int(random.randrange(1,len_mensaje/10))
#se aumenta en uno por el ultimo paquete del modulo
total_paquetes += 1
print "total de paquetes: ", total_paquetes
largo_paquetes = len_mensaje / total_paquetes
print "largo de paquetes: ", largo_paquetes
print "tam: ultimo paquete: ", len_mensaje % total_paquetes
copia = getLista(mensaje)
for i in range(1, total_paquetes+1):
contenido = ""
for j in range(largo_paquetes):
contenido += copia.pop(0)
paquetes.append(Paquete(i,i,total_paquetes+1,contenido))
cf = ""
for e in copia:
cf += e
print "sobrante de msj: ", len(copia)
print "Contenido del paquete: ", i+1, " = ", cf
paquetes.append(Paquete(i+1,i+1,total_paquetes+1,cf))
print ""
print "listado de paquetes: ", len(paquetes)
for e in paquetes:
print "contenido de paq: ", e.contenido
enviaPaquetes(paquetes)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment