Sie sind auf Seite 1von 11

Universidad de La Frontera

Facultad de Ingeniería y Ciencias


Departamento de Ciencias de la Computación e Informática.

Funciones
de un socket

Asignatura : Taller de Redes (ICC337)


Profesor : Flavio Rojas Acuña
Integrantes : Jonathan Lizama Llancaqueo
Eduardo Silva Medina
Francisco Vega Jaramillo

Temuco, 25 de marzo de 2019


Introducción 3
Glosario 4-5
Juego Batalla Naval 5
ServerBatallaNaval.py 5-9
CLIENTE.PY 10
Conclusión 11

2
Introducción:
Un socket es un método para la comunicación entre un programa del cliente y un
programa del servidor. Se define como el punto final de una conexión. Se utiliza con
métodos o funciones a veces llamados interfaz de aplicación de sockets (API),
para la comunicación de estos son fundamentales 3 recursos:

● Una dirección que identifica un computador.


● Un número de puerto que identifica a un programa.
● Un protocolo de comunicaciones.

Python es un lenguaje de programación de propósito general, que permite procesar


fácilmente todo tipo de estructura. Fue creado por Guido Van Rossum en la década de los
noventa. Este lenguaje se desarrolla bajo una licencia de Open source o código abierto,
este lenguaje servirá para mostrar las funciones de un socket dentro un código de trabajo

Para entender el uso de socket, como son y su funcionamiento se pueden realizar


pequeñas pruebas con programas que permiten mostrar e identificar diferentes
funcionalidades que usan los sockets dentro de un programa.

A continuación, se muestra la creación de un juego llamado “Batalla Naval”. El cual está


realizado en un lenguaje de Python, en el que se utiliza como parte esencial del programa
un socket haciendo énfasis en diferenciar y mostrar sus funciones y/o métodos.

El objetivo de este juego es simular un campo de batalla entre dos contrincantes(clientes)


en el cual cada quien creará su base en un espacio delimitado de 3x3 donde a través de un
mini sistema de indicaciones fila-columna el usuario indicará dónde desea instalar sus
barcos los cuales recibirán un ataque de su oponente.

Primero que nada, se utilizan dos archivos para simular la conexión cliente-servidor, el
servidor será un archivo que llamaremos “ServerBatallaNaval.py” y el cliente “Cliente.py”.

3
Glosario, definiciones.

Antes de comenzar, daremos a conocer términos, atributos y funciones del lenguaje de


programación Python que nos ayudará a entender nuestro programa.

Inicialmente tendremos las importaciones “import”. Las cuales nos ayudará a acceder a
métodos de diferentes bibliotecas de Python para su utilización.

Estas funciones serán esencial para la creación y comunicación de nuestro Cliente y


Servidor.
Dentro de ellas utilizaremos las siguientes:

Nos permite la creación de un objeto socket llamado “s”. El cual nos permitirá usar los
siguientes métodos.

Nos permite asociar una dirección local donde queda especificado el puerto que se usará
para la conexión.

Esta función específica que el socket llamado “s” desea aceptar un máximo de “maxcon”
conexiones.

Esta función acepta una petición de conexión del socket llamado “s”.

La función send, envía datos al socket ‘s’.

La función recv lee los datos especificados por el socket “s”.

Esta función cierra un recurso dado por el socket “s”.

La función conecta al socket ‘s’ a una dirección y puerto específico.

Nos permite la fecha y hora del computador.

4
Nos permite crear un archivo con un dato específico.

Nos permite remover un archivo no deseado.

Juego Batalla Naval


Para la creación de nuestro juego, tal como mencionamos crearemos dos programas con
sus respectivas funciones en lenguaje de programación Python.

ServerBatallaNaval.py

Comenzamos importando las bibliotecas y definiendo los atributos


necesarios para el funcionamiento de nuestro servidor.
Este programa incorpora dos clases que veremos a continuación:

CLASS SERVER ()

Esta clase crea un socket, permitiendo la


conexión de los clientes al servidor.
Nuestro socket tendrá un nombre con la
dirección ip “127.0.0.1”. Y estará
escuchando en el puerto 9999.
Permitirá un máximo de dos Clientes para
nuestro juego.

5
CLASS CLIENT ()

Iniciamos un constructor, en el cual tendrá


como parámetro de entrada un socket y una
dirección, que serán pertenecientes al
Cliente que establezca conexión.

A continuación, tendremos los métodos que permitirán el funcionamiento de nuestro juego


“Batalla Naval”. Cabe destacar, que los clientes además de jugar, podrán interactuar en la
ventana del servidor a través de un chat, enviando mensajes y cambiando su estado de
conexión.
.

Iniciaremos el juego, recibiendo el nombre del Cliente que se ha conectado. Y se agregara a


una lista de usuario.

Cuando comience el juego se ingresará en un vector el estado del cliente. El cual nos
permitirá a través de métodos saber si está conectado, y si es su turno de juego.
Luego este vector se guardará en un archivo de texto ‘txt’, con el que trabajaremos más
adelante.

6
Como nos dice el método nos permitirá prepararnos para la “Batalla Naval”, Llamará a los
métodos para ingresar la posición de sus barcos, la cual se guardará nuevamente en un
archivo de texto ‘txt’.

Crearemos la matriz e ingresamos las coordenadas de sus barcos.

Al iniciar este método, crearemos una matriz “matrizE”, la cual guardará los ataques que
efectuará el cliente. Luego tal como muestra la imagen, el Cliente tendrá la opción de
“Atacar”, enviar mensaje, cambiar su estado o finalizar el juego.

7
Este método nos permitirá saber el turno o la victoria, del “jugador” o cliente contrincante.
Para ellos se observará el archivo “Estado+enemigo.txt” el cual obtendrá el vector “estado”
mencionado anteriormente. El cual consta de tres espacios, el primero para el estado del
usuario cliente, el segundo para el usuario contrincante y finalmente el tercero, para saber si
el cliente ha ganado.

Finalmente, con estos métodos se efectúa el “Ataque” del Cliente. Además, llama a los
métodos que nos permite saber si el cliente ha ganado, o si el juego finalizo.

8
Para hacer un programa un poco más eficiente para el cliente, ésta clase contiene los
siguientes métodos. Que realizan las validaciones, ingresos de datos a txt, manejo de
archivos, entre otros. Los cuales realizan la función que su nombre les ha dado.

9
CLIENTE.PY

Para nuestro programa de Cliente.


Creamos un socket y lo conectamos a
la dirección y puerto de nuestro
socket servidor del programa
ServerBatallaNaval.py.
Permitimos al programa Cliente enviar
y recibir mensajes de nuestro
programa Servidor dentro de un ciclo,
el cual finalizará cuando el mensaje
sea ‘\No’.

10
Conclusión
En esta oportunidad pudimos comprender de mejor manera la importancia del socket, para
la comunicación entre el modelo cliente-servidor, aprendimos sus diferentes funciones y
procesos que deben realizar los distintos sockets para entablar una conexión.

A través del lenguaje de programación Python tuvimos la pertinencia de familiarizarnos con


este sistema de flujo de datos, lo que nos permitió construir un programa que es capaz de
transmitir una simulación del esquema requerido para los fines que se necesitaban explicar
y entender de una mejor manera.

11

Das könnte Ihnen auch gefallen