Python - Problema de socket en python

 
Vista:

Problema de socket en python

Publicado por Rafa (1 intervención) el 17/10/2017 19:44:49
Buenas tardes:

Soy novato en Python y me piden esto, os lo pongo y a ver si me podeis ayudar:

"CODIGO EN PYTHON"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import socket
import sys
HOST = '' # Nombre o direccion de la maquina. Puede estar vacio en el servidor
PORT = 8888 # Puerto de escucha del servidor. PORT >= 5000
BUFFER = 1000 # Tamano del buffer de recepcion
s = socket.XXXXXXX (socket.AF_INET, socket.SOCK_STREAM)
print 'Socket creado...'
# Enlaza el socket con la direccion y puerto local
try:
s.bind((XXXXXXX, XXXXXXX))
# Captura excepciones. Si existe, un error sale del programa
except socket.error as msg:
print 'Fallo en BIND. Cod. Error: ' + str(msg[0]) + ' Mensaje ' + msg[1]
sys.exit()
print 'Socket Enlazado...'
# Comienza la escucha en el socket
s.listen(10)
print 'Socket escuchando...'
while 1:
# Espera a que lleguen clientes.
cliente, addr = s.XXXXXXX()
print 'Conectado con ' + addr[0] + ':' + str(addr[1])
while 1:
# Recepcion de datos
datos = cliente.XXXXXXX (XXXXXXX)
if datos:
cliente.XXXXXXX (XXXXXXX)
print 'Recibido: ' + datos
# Se dejara de trabajar con el cliente si se recibe “EXIT”
if datos[0:4] == 'EXIT':
Página 2
cliente.close()
break
s.close()

"Y ME PIDEN"

El código anterior se puede encontrar en el archivo servidor_a_completar.py. Se pide al alumno modificar el código cambiando las cadenas XXXXXXX por código correcto que permita conectar con el servidor.
A la hora de incorporar el código hay que tener en cuenta especialmente:
• Las llaves en Python se implementan a través de la indentación (introduciendo tabuladores).
• No se deben poner acentos en el código, aunque sea en los comentarios.

Para ejecutar el código, se debe utilizar el intérprete de Python en un terminal:

$ python <nombre_del_programa.py>

Para conectar un cliente telnet con el servidor, se debe utilizar en otro terminal la orden telnet, seguida de la dirección (127.0.0.1 si estamos ejecutando cliente y servidor en la misma máquina) y del puerto del servidor (el configurado en el código del servidor):

$ telnet 127.0.0.1 8888

Para desconectar el cliente del servidor se debe enviar la palabra “EXIT” (en mayúsculas). El servidor se puede detener utilizando la combinación de teclas Ctrl+C.

Tras la realización del código y verificar que funciona (esto es, es posible conectar con el servidor a través de telnet y se pueden enviar y recibir mensajes), se pide contestar a las siguientes preguntas:

1. Al arrancar el servidor, éste imprime una línea que comienza por “Conectado con” ¿Qué son los datos que aparecen a continuación?

2. Conectar dos clientes al mismo servidor (tras parar y rearrancar el servidor, en dos terminales diferentes, ejecutar telnet dos veces). Cerrar la conexión del primer cliente arrancado. ¿Cuál es el comportamiento del servidor? ¿A qué se debe? ¿Sería posible conectar más de un cliente a través de un socket?

3. Después de rearrancar el servidor de nuevo, conectarse al mismo desde un navegador web (usando la dirección y el puerto del servidor, separados por “:” como dirección, p.ej. http://127.0.0.1:8888). ¿Qué ocurre en el servidor? ¿Qué se ve en el navegador?


Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder