martes, 12 de febrero de 2013

Entrada # 2 Materia

Redes de Telecomunicaciones
Entrada # 2

Para esta entrada se realizo un código en el cuál nos apoyamos del protocolo UDP para el envío de información de un cliente a un servidor.

Primeramente muestro una definición de este protocolo:


Consiste en un protocolo el cuál nos permite el envío de mensajes a través de la red sin que se haya establecido previamente una conexión (de forma local).

Este protocolo no cuenta con un control de flujo por lo que los algunos mensajes pueden adelantarse a otros; y no cuenta con una confirmación de envió y recibido por lo tanto no sabemos si ha llegado correctamente el mensaje.


Comúnmente las aplicaciones cliente-servidor que tienen una solicitud y una respuesta utilizan el protocolo UDP en lugar de tomarse la molestia de establecer y luego liberar una conexión. 

El protocolo UDP se describe en el RFC 768

Refiriéndome a la entrada:

Primeramente algunos comentarios:

Para la conexión se hizo uso de Sockets en Python
Manejo de Archivos en el cuál se guarda los mensajes enviados por el cliente al servidor.
Se manejaron dos archivos en Python uno es el del Servidor y otro es el del Cliente.

La ejecución del código fue el siguiente.

Corro cada script de python en una distinta terminal:


Le envía un mensaje el cliente al servidor.



Después el Servidor le responde al cliente que recibió información 



Por último se muestra el .dat con la información enviada al servidor 


A continuación muestro el código:

Código del Cliente

import socket
direccion = "127.0.0.1"
puerto = 9999
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((direccion, puerto))
print "Solicitando Conexion -----------"
except socket.error:
print "No pudo conseguir el socket"
def main():
#while True:
mensaje = raw_input("Mensaje a Enviar al Servidor --> ")
print mensaje
paquete(mensaje)
recibir()
#Obtener longitud de un texto
def paquete(mensaje):
Lista = list(mensaje)
Tamano = len(Lista)
Paquete = 2
bandera = 1
c = 0
menlist = ""
for i in Lista:
menlist = menlist + i
c = c + 1
if c == Paquete:
enviar(menlist)
c = 0
menlist = ""
if ((Tamano % 2) != 0) and (i == Lista[Tamano - 1]):
enviar(menlist)
menlist = ""
def enviar(mensaje):
s.sendto(mensaje, (direccion, puerto)) #Envio el mensaje al servidor
def recibir():
Msjserv = s.recvfrom(1024)
Msj = Msjserv[0]
print "Mensaje del Servidor --> "+str(Msj)
main()
view raw Cliente.py hosted with ❤ by GitHub
Código del Servidor
import socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #El socket como variable global para poder ser utilizado por todos los metodos
print "Socket Creado :D"
s.bind(("127.0.0.1", 9999))
print "Servidor Listo para recibir informacion :D \n"
except socket.error:
print "No se pudo crear el Socket :("
def main():
Dir = ""
Archivo = open("Datos.dat", "w")
while True:
msj = s.recvfrom(1024) #La varible msj recibe el mensaje y la direccion de quien envio este mensaje
Direccion = msj[1] #Esta variable almacena la direccion del remitente
Texto = msj[0] #Esta variable almacena el mensaje
if Dir != Direccion: #Si se detecta una nueva direccion imprime la direccion de este
print "Informacion recibida de --> "+str(Direccion)
Archivo.write("\n")
Dir = Direccion
Archivo.write(Texto)
s.sendto(str("Informacion Recibida :) muchas gracias"), Direccion)
Archivo.close()
main()
view raw Servidor.py hosted with ❤ by GitHub


Liga al repositorio: https://github.com/PedritoMtz/RedesdeTelecomunicaciones.git

1 comentario:

  1. Yo esperaba algo multicliente y con una descripción gráfica (diagrama de secuencias de algo) sobre lo que ocurre. Van 8 pts.

    ResponderEliminar