Académique Documents
Professionnel Documents
Culture Documents
Computadores y Comunicaciones
ndice de contenidos
1.
2.
3.
4.
Introduccin....................................................................................................2
Ejemplo 1: Aplicacin bsica..........................................................................2
Ejemplo 2: Aplicacin interactiva...................................................................3
Anexos: Cdigos de los ejemplos....................................................................4
4.1. Cdigos del Ejemplo 1..............................................................................4
Computadores y Comunicaciones
1. Introduccin
Esta prctica de laboratorio tiene como objetivo mostrar el funcionamiento de
las aplicaciones basadas en el modelo cliente-servidor.
Para ello, se ha desarrollado una serie de ejemplos sobre un sistema
Ubuntu/Linux, en concreto:
Computadores y Comunicaciones
del
directorio
c_s_basico,
moverse
al
directorio
$ cd ../c_s_interactivo
Computadores y Comunicaciones
en
ejemplos
de
"Network
Computadores y Comunicaciones
import sys, os
from socket import *
# Establece el nombre y el puerto del servidor (sern dos parmetros
# pasados por la lnea de comandos).
if(len(sys.argv) > 2):
server_name=sys.argv[1]
server_port = int(sys.argv[2])
else:
print "Uso: python cliente_basico server_name server_port"
sys.exit(1)
# Obtiene la direccin IP correspondiente al servidor.
server_address = gethostbyname(server_name)
# Crea un socket.
connection_socket = socket(AF_INET,SOCK_STREAM)
# Conecta el socket al servidor.
connection_socket.connect((server_address, server_port))
# Crea los ficheros asociados con el socket. Permite leer y escribir del
# socket como si de un fichero se tratase.
incoming_stream = connection_socket.makefile("rt")
outgoing_stream = connection_socket.makefile("wt")
# Ahora el cliente puede comunicarse con el servidor.
# Lee la hora y la imprime en la salida estndar (monitor).
print incoming_stream.read()
# Cierra la conexin y termina
incoming_stream.close()
outgoing_stream.close()
connection_socket.close()
Computadores y Comunicaciones
Computadores y Comunicaciones
msg = incoming_stream.readline()
print msg
if msg == "salir\n":
break
# Se cierran los sockets
incoming_stream.close()
accepted_socket.close()
print "Cliente desconectado. Si no est desconectado escriba salir"
os.waitpid(pid, 0)
else:
Computadores y Comunicaciones
connection_socket = socket(AF_INET,SOCK_STREAM)
# Conecta el socket al servidor.
connection_socket.connect((server_address, server_port))
# El actual proceso se divide en dos:
# 1. Proceso padre: se encarga de leer los mensajes procedentes del
# servidor y de imprimirlos en pantalla
# 2. Proceso hijo: recoge mensajes de la entrada estndar y los enva al
# servidor
pid = os.fork()
if pid != 0:
# Entrando en el proceso padre
# Permite leer del socket como si de un fichero se tratase.
incoming_stream = connection_socket.makefile("rt")
print "El cliente acepta mensajes del servidor"
# Se entra en un bucle: cada vez que el servidor enva un mensaje lo
# imprimimos
# Si el mensaje es salir el servidor quiere desconectarse por lo que
# el cliente no aceptar ms mensajes
while True:
msg = incoming_stream.readline()
print msg
if msg == "salir\n":
break
# Se cierran los sockets
incoming_stream.close()
connection_socket.close()
print "Servidor desconectado. Si no est desconectado escriba salir"
os.waitpid(pid, 0)
else: