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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
Liga al repositorio: https://github.com/PedritoMtz/RedesdeTelecomunicaciones.git
Yo esperaba algo multicliente y con una descripción gráfica (diagrama de secuencias de algo) sobre lo que ocurre. Van 8 pts.
ResponderEliminar