¿Cómo se comunican los programas escritos en lenguajes distintos?

Antonio Sarosi
27 Nov 202013:41

Summary

TLDREn este video, el creador explica cómo los programas escritos en diferentes lenguajes de programación se comunican entre sí, abordando temas como lenguajes compilados e interpretados, la importancia de las instrucciones máquina, y el uso de tuberías para la comunicación entre procesos. Además, profundiza en los sockets, que permiten la comunicación entre procesos en diferentes máquinas a través de una red. El video incluye ejemplos prácticos en C, Python, Java y JavaScript, y menciona su curso sobre sistemas operativos con descuento por Black Friday, ofreciendo certificados al completar los exámenes.

Takeaways

  • 📚 El video busca explicar cómo se comunican programas escritos en lenguajes diferentes.
  • 💻 Los lenguajes se dividen en compilados (C), interpretados (Python) y lenguajes mixtos como Java (compilado a bytecode y luego interpretado por la Máquina Virtual de Java).
  • 🏗️ Todos los programas deben ser convertidos en instrucciones máquina para ser ejecutados por el procesador.
  • 🔄 Los pipes permiten que la salida de un programa sea usada como entrada de otro, permitiendo la comunicación entre procesos.
  • 🧩 Ejemplo práctico: un programa en C imprime números y otro en Python los recibe y los ordena, usando tuberías para conectar la salida de uno con la entrada del otro.
  • 🌍 Los sockets permiten la comunicación entre procesos en diferentes máquinas, mientras que los pipes solo lo permiten en la misma máquina.
  • 🔌 Los sockets pueden usarse para crear un sistema de chat simple, donde un servidor recibe mensajes de varios clientes.
  • 📝 El servidor escucha en un puerto y, por cada conexión de cliente, crea un hilo para manejar la comunicación individual.
  • 💡 Los clientes pueden estar escritos en diferentes lenguajes, como Python o JavaScript, y comunicarse entre sí mediante sockets.
  • 🎓 El video promociona un curso sobre sistemas operativos donde se enseña más sobre la programación de procesos, hilos y tuberías.

Q & A

  • ¿Cuál es el objetivo principal del vídeo?

    -El objetivo del vídeo es explicar cómo se comunican entre sí los programas escritos en diferentes lenguajes de programación.

  • ¿Qué lenguajes de programación se mencionan en el vídeo?

    -Se mencionan C, Python y Java, explicando cómo funcionan en términos de compilación e interpretación.

  • ¿Cuál es la diferencia entre un lenguaje compilado y uno interpretado?

    -Un lenguaje compilado como C convierte el código en instrucciones máquina antes de ser ejecutado, mientras que un lenguaje interpretado como Python ejecuta el código línea por línea sin convertirlo en instrucciones máquina de antemano.

  • ¿Cómo funciona la máquina virtual de Java (JVM) en comparación con otros lenguajes?

    -Java no se compila directamente en instrucciones máquina, sino en bytecode, que es interpretado por la JVM. La JVM actúa como un intérprete de este bytecode.

  • ¿Qué es una tubería (pipe) en sistemas operativos?

    -Una tubería permite redirigir la salida de un programa como entrada de otro programa, facilitando la comunicación entre procesos en una misma máquina.

  • ¿Cómo funciona un socket y en qué se diferencia de una tubería?

    -Un socket permite la comunicación entre procesos en diferentes máquinas a través de una red. A diferencia de las tuberías, los sockets no están limitados a procesos en la misma máquina.

  • ¿Cómo se crea un servidor de chat utilizando sockets?

    -El servidor escucha conexiones en un puerto específico. Cada vez que un cliente se conecta, el servidor lo atiende creando un hilo para manejar la conexión y la comunicación.

  • ¿Por qué los sockets son más versátiles que las tuberías?

    -Los sockets permiten la comunicación entre procesos en diferentes máquinas, mientras que las tuberías solo funcionan entre procesos en la misma máquina, lo que las hace más limitadas.

  • ¿Cuál es la limitación mencionada en el uso de tuberías para la comunicación entre programas?

    -Las tuberías pueden complicarse cuando se necesita comunicar más de un proceso a la vez, ya que están diseñadas para comunicación uno a uno entre procesos.

  • ¿Qué ejemplo práctico se muestra en el vídeo para ilustrar la comunicación entre programas?

    -Se muestra un ejemplo donde un programa en C genera números y los pasa a un programa en Python que los ordena. También se utiliza un ejemplo con un servidor de chat en Java que se comunica con clientes en Python y JavaScript.

Outlines

00:00

🧐 Introducción y Propósito del Video

El presentador comienza saludando a su audiencia y menciona que el video tendrá un enfoque más didáctico, resolviendo una pregunta existencial que tenía cuando era principiante: ¿cómo se comunican los programas escritos en diferentes lenguajes? También promociona su nuevo curso de sistemas operativos, destacando que ofrece certificación y un descuento especial por Black Friday, invitando a los espectadores a aprovechar la oferta antes de que expire.

05:01

🤖 Cómo se Ejecutan los Programas en Diferentes Lenguajes

Se explica cómo los programas escritos en diferentes lenguajes se convierten en instrucciones de máquina para que el procesador pueda entenderlos. Se presentan tres ejemplos de programas en lenguajes distintos (C, Python y Java), explicando las diferencias clave entre lenguajes compilados e interpretados. El lenguaje C es compilado, Python es interpretado y Java sigue un enfoque mixto, donde se compila en bytecode y luego es interpretado por la máquina virtual de Java.

10:03

🔄 Comunicación Básica entre Programas usando Tuberías

El presentador demuestra cómo dos programas pueden comunicarse usando tuberías. Explica el concepto de pasar la salida de un programa como entrada a otro, utilizando un ejemplo práctico con un programa en C que imprime números y uno en Python que los ordena. Este mecanismo de comunicación es muy básico y limitado, lo que introduce la necesidad de mecanismos más avanzados, como los sockets.

🌐 Introducción a los Sockets para Comunicación entre Procesos

Aquí se introduce el concepto de sockets, un mecanismo más avanzado que permite la comunicación entre procesos no solo en la misma máquina, sino también entre diferentes máquinas a través de una red. Se explica que un socket es la combinación de una dirección IP y un puerto, lo que permite identificar y conectar procesos específicos en una máquina. También se muestra un ejemplo de un servidor en Java que maneja múltiples conexiones de clientes.

💻 Ejemplo de Cliente-Servidor usando Sockets

El presentador describe cómo se implementan clientes que se conectan al servidor a través de sockets, usando como ejemplo un cliente en Python y otro en JavaScript. Ambos clientes envían mensajes al servidor y reciben una confirmación de que el mensaje ha sido recibido. El presentador también menciona que hacer que los mensajes se envíen a todos los clientes sería más complejo, requiriendo programación paralela con hilos.

📦 Cierre y Recursos Adicionales

El video concluye con el presentador animando a los espectadores a probar el código por sí mismos, escribiendo más clientes y servidores siguiendo el modelo mostrado. También les recuerda que pueden encontrar el código fuente, sus redes sociales, la música usada en el video y el curso de sistemas operativos en la descripción del video.

Mindmap

Keywords

💡Lenguaje compilado

Un lenguaje compilado es aquel cuyo código fuente se traduce directamente a instrucciones máquina que pueden ser ejecutadas por un procesador. En el video, el ejemplo de C ilustra cómo un programa compilado transforma el código en un ejecutable, lo que permite su comunicación con otros procesos.

💡Lenguaje interpretado

En un lenguaje interpretado, el código fuente no se traduce directamente en instrucciones máquina, sino que es ejecutado sobre la marcha por un intérprete. Python es un ejemplo de lenguaje interpretado mencionado en el video, donde el código se procesa en tiempo real sin necesidad de un compilador.

💡Bytecode

El bytecode es un código intermedio que no es directamente ejecutable por una máquina, pero que puede ser interpretado por una máquina virtual, como la JVM (Java Virtual Machine). En el video se menciona cómo Java compila su código a bytecode, que luego es ejecutado por la JVM, a diferencia de otros lenguajes.

💡Tuberías (Pipes)

Las tuberías son un mecanismo en sistemas operativos que permite redirigir la salida de un proceso como la entrada de otro. En el video, se explica cómo se puede pasar la salida de un comando como `ls` a `grep` para filtrar resultados, lo que demuestra cómo los procesos pueden comunicarse.

💡Sockets

Los sockets son una tecnología que permite la comunicación entre procesos en distintas máquinas o dentro de la misma, a través de una red. En el video, se utiliza un ejemplo de un servidor de chat en Java que se comunica con clientes escritos en Python y JavaScript a través de sockets.

💡Cliente-Servidor

El modelo cliente-servidor describe una relación en la que el cliente solicita recursos o servicios de un servidor, que responde a dichas solicitudes. En el video se ejemplifica este modelo a través de un servidor de chat en Java, que recibe mensajes de varios clientes conectados mediante sockets.

💡JVM (Java Virtual Machine)

La JVM es una máquina virtual que ejecuta bytecode compilado desde código fuente de Java. Es un ejemplo de cómo Java no es ni completamente compilado ni completamente interpretado, ya que el bytecode es ejecutado por la JVM, como se menciona en el video cuando se compara con otros lenguajes.

💡Hilos (Threads)

Los hilos son una forma de dividir la ejecución de un programa en múltiples tareas que pueden ejecutarse de manera concurrente. En el video se explica cómo el servidor en Java utiliza hilos para manejar múltiples clientes de manera simultánea, creando un nuevo hilo por cada cliente que se conecta.

💡Procesos

Un proceso es un programa en ejecución. El video menciona cómo los procesos pueden comunicarse entre sí mediante mecanismos como tuberías o sockets, y cómo el código fuente de diferentes lenguajes debe ser convertido a instrucciones máquina para que el procesador lo ejecute.

💡Compilador

El compilador es el programa que traduce el código fuente de un lenguaje de programación a código máquina o bytecode. En el video, se menciona cómo los lenguajes compilados como C utilizan un compilador para generar código que puede ser ejecutado directamente por el sistema.

Highlights

En este video, vamos a resolver una duda existencial sobre cómo se comunican los programas escritos en diferentes lenguajes.

Los programas escritos en cualquier lenguaje deben ser convertidos en instrucciones máquina para que el procesador las entienda.

Explicación de la diferencia entre lenguajes compilados, interpretados y lenguajes como Java que usan bytecode y la máquina virtual (JVM).

Se presenta cómo la salida de un programa puede pasarse como entrada a otro programa utilizando 'pipes' o tuberías.

Ejemplo de un programa en C que recibe números como argumentos y otro en Python que los ordena.

Demostración de cómo dos programas pueden comunicarse utilizando tuberías, mostrando la ejecución conjunta de un programa en C y uno en Python.

Introducción a los 'sockets' como un mecanismo de comunicación más avanzado que permite que procesos en diferentes máquinas se comuniquen.

Explicación de los sockets, que permiten la comunicación entre procesos en cualquier máquina conectada a una red.

Demostración de un servidor de chat sencillo en Java que escucha en un puerto y maneja conexiones de múltiples clientes usando hilos.

El servidor en Java escucha en un puerto específico y puede atender a múltiples clientes simultáneamente usando hilos.

Ejemplo de cliente en Python que se conecta al servidor de Java y envía mensajes, recibiendo confirmaciones de mensaje recibido.

Demostración de otro cliente hecho en JavaScript que se conecta al mismo servidor de chat en Java, funcionando de manera similar al cliente en Python.

Los clientes en Python y JavaScript se comunican con el servidor Java a través de sockets, intercambiando mensajes en tiempo real.

El código del servidor y los clientes está disponible para que cualquiera lo utilice o modifique.

Recordatorio del curso de sistemas operativos donde se pueden aprender más detalles sobre tuberías y programación paralela.

Transcripts

play00:00

qué pasa chavales cuánto tiempo no pues

play00:02

no hombre no esta vez ya no que la

play00:03

semana pasada su vídeo

play00:06

ah

play00:08

en esta ocasión vamos a hacer un vídeo

play00:10

un tanto más didáctico por así decirlo

play00:12

resolviendo una especie de duda

play00:13

existencial que tenía yo cuando era un

play00:16

nube y no sabía nada entonces la

play00:18

pregunta es la siguiente cómo hacen los

play00:20

programas escritos en lenguajes

play00:22

diferentes para poder comunicarse entre

play00:24

sí porque vale hay muchos lenguajes hay

play00:25

muchos programas pero cómo se comunican

play00:27

entre sí eso es lo que vamos a tratar de

play00:29

responder en los siguientes minutos pero

play00:31

antes como viene siendo de costumbre

play00:33

este vídeo está patrocinado por master

play00:35

mind tenéis disponible mi nuevo curso de

play00:37

sistemas operativos que es básicamente

play00:39

un curso donde aprendemos cómo funcionan

play00:41

los sistemas operativos cómo funcionan

play00:43

los procesos los hilos la memoria las

play00:45

tuberías etc etc

play00:46

programando ente y no sólo eso sino que

play00:49

esta vez tenemos una novedad podéis

play00:51

obtener certificados por vuestros cursos

play00:53

si al acabar el curso hacéis un pequeño

play00:56

examen y sacáis más de 18 si sacáis más

play00:59

de un 8 pues obtendréis vuestro

play01:01

certificado y hoy día 27 black friday

play01:04

tenéis un 40% de descuento aplicando el

play01:07

código master black pero sólo hasta las

play01:08

12 de la noche así que tenéis que ir

play01:10

rapidito así que he dicho esto tenéis el

play01:12

curso de sistemas operativos en

play01:14

descripción ahora vamos a ponernos manos

play01:16

a la obra

play01:17

[Música]

play01:20

bien pues para entender cómo se

play01:22

comunican por así decirlo los programas

play01:24

entre sí tenemos que entender antes cómo

play01:25

se ejecutan estos programas para ello

play01:27

tenemos que partir de la siguiente

play01:29

premisa de una forma u otra todo código

play01:31

de cualquier programa debe ser

play01:32

convertido en instrucciones máquina

play01:34

porque las instrucciones máquina es lo

play01:36

único que puede entender un procesador

play01:38

así que para entender esto os he

play01:40

preparado aquí tres pedazos de holamun2

play01:42

escritos en lenguajes diferentes el

play01:45

primero de ellos es el lenguaje efe que

play01:47

no es un lenguaje cualquiera es el

play01:48

lenguaje vale porque es un clasicazo de

play01:50

la informática entonces que tiene este

play01:53

lenguaje de diferente con respecto a

play01:55

java y payton pues básicamente que es un

play01:57

lenguaje compilado eso significa que el

play02:00

programa que compila este código lo

play02:02

transformará en instrucciones máquina

play02:04

que podremos ejecutar

play02:06

eso se llama compilador por otro lado en

play02:08

la parte de abajo está python que es un

play02:10

lenguaje interpretado eso significa que

play02:12

el programa que ejecuta este código no

play02:15

lo transforma en instrucciones máquina

play02:17

como tal sino que lo ejecuta sobre la

play02:19

marcha por eso se llama interpretado

play02:21

ahora bien java lo he dejado para el

play02:23

final porque es un poco especial porque

play02:25

no se compilan

play02:26

tenéis máquina como tal y tampoco se

play02:28

interpreta directamente sino que lo que

play02:31

hay que hacer con el código de java es

play02:32

primero compilar los bites code de java

play02:35

que es código binario pero no binario

play02:37

que se pueda ejecutar por el sistema

play02:39

sino binario que será ejecutado por la

play02:42

ley bien la llama virtual machine o

play02:44

máquina virtual de java es decir en este

play02:46

caso la máquina virtual actúa por así

play02:48

decirlo de intérprete

play02:50

igual que payton pero no de intérprete

play02:52

de este código sino de este código

play02:55

convertido a byte code esto es en rasgos

play02:58

generales los tres tipos de lenguajes

play03:00

que hay y cómo se ejecutan

play03:05

y ahora que ya sabemos cómo convertir

play03:08

cualquier tipo de programa en

play03:09

instrucciones máquina cómo hacemos para

play03:11

que dos procesos que básicamente son

play03:13

programas en ejecución puedan

play03:15

comunicarse datos entre sí pues si

play03:17

habéis usado base o cualquier shell

play03:19

sabéis que existen los payeses vale los

play03:21

pipes nos sirven para la salida de

play03:23

un programa y pasársela como de entrada

play03:25

a otro programa por ejemplo si hago un

play03:28

ls aquí vemos un listado de lo que hay

play03:30

pero y si yo quiero este listado y

play03:32

filtrarlo con otro programa pues yo

play03:34

puedo la salida de ls y pasársela

play03:37

por una tubería por ejemplo a greg y con

play03:39

greg buscar sólo aquellas cadenas que

play03:42

tengan la palabra hello en minúscula

play03:45

entonces obtengo estos dos pues lo que

play03:48

ha pasado aquí es que la salida de este

play03:49

programa es la entrada este por lo tanto

play03:51

hay una comunicación de aquí aquí por

play03:53

eso se llama digamos tubería no porque

play03:55

tiene dos zonas una para meter datos y

play03:57

otra para leer vamos a ver esto con un

play03:59

ejemplo propio con un programa que

play04:01

hayamos hecho nosotros porque el ls y el

play04:04

crêpe no los hemos hecho nosotros pero

play04:05

estos programas de aquí si los podéis

play04:07

copiar si queréis entonces tenemos

play04:09

primero un programa en lenguaje c

play04:12

lo único que hace es los

play04:13

argumentos que tú le pasas y escribirlos

play04:15

y por otro lado tenemos debajo un

play04:17

programa escrito en python que lo que

play04:19

hace es datos de la entrada e

play04:22

interpretarlos como números para

play04:23

ordenarlos vale porque lo he hecho así

play04:25

pues ahora lo veréis vamos a ver esto

play04:27

así que vamos a y vamos a compilar

play04:30

el programa escrito en lenguaje zen que

play04:32

como sabéis nos genera un ejecutable al

play04:34

que podemos pasarle como hemos dicho

play04:35

argumentos por ejemplo 5 4 3 2 1 que son

play04:38

números lo único que hace este programa

play04:41

es imprimir esos números pero como hemos

play04:44

dicho tenemos aquí un programa que va a

play04:46

números de la entrada y los va a

play04:48

ordenar pues vamos a ver si es verdad

play04:50

podemos la salida de este programa

play04:53

que hemos ejecutado y pasarla como

play04:55

entrada al otro programa que básicamente

play04:58

lo que hará es ordenar veis hemos cogido

play05:01

el 5 4 3 2 1 y los hemos ordenado

play05:03

entonces aquí veis que están pasando

play05:05

cosas un poco extrañas no primero

play05:07

tenemos aquí un binario vale que le

play05:10

pasamos los datos después tenemos una

play05:12

tubería aquí tenemos otro programa que

play05:14

ejecuta otro programa que le datos de

play05:16

este otro programa es un poco raro no

play05:18

pues sí es extraño pero es simple a la

play05:21

vez porque lo único que hemos hecho es

play05:23

una salida y pasarla como entrada

play05:25

a otro programa sin más o sea da igual

play05:28

que este programa necesite de otro

play05:30

programa para poder ser ejecutado y no

play05:32

sé qué historias porque a fin de cuentas

play05:33

todo programa tiene una entrada y una

play05:36

salida vamos a ver otro ejemplo más

play05:38

tenemos aquí un programa escrito en java

play05:40

y otro programa escrito en python este

play05:42

programa hace prácticamente lo mismo que

play05:44

el otro dt que hemos visto antes es

play05:46

decir coge los argumentos que tú le

play05:48

pasas y los imprime después tenemos el

play05:51

programa de payton que lo que hará será

play05:52

datos de la entrada asignarle a

play05:55

cada uno un índice e imprimirlo vamos a

play05:58

ver esto en acción cogemos y compilamos

play06:01

el programa escrito en java vale el de

play06:03

escribir mensajes punto java y el de pay

play06:06

son ya sabéis que no necesitamos

play06:07

compilarlo ahora ejecutamos el programa

play06:10

de java y le pasamos como mensaje es

play06:13

pues lo que puse yo aquí 1 2 3 y 4

play06:17

ahora esto lo cogemos y se lo pasamos

play06:20

como entrada al programa de payton es

play06:23

decir al que lee los mensajes y ya veis

play06:26

lo que hace coge cada uno de estos

play06:28

mensajitos y le asigna un número sin más

play06:31

pues esta es una comunicación muy muy

play06:33

básica entre procesos a través de

play06:35

tuberías y debido a que es muy básica

play06:37

pues también es un poquito limitante no

play06:40

porque qué pasa si queremos que este

play06:41

programa reciba mensajes de cuatro

play06:44

programas en lugar de uno solo ahí ya se

play06:47

complica con tuberías se puede hacer

play06:49

vale pero es mucho más complicado que

play06:50

con lo que vamos a ver ahora

play06:54

el siguiente mecanismo de comunicación

play06:56

que proporcionan los sistemas operativos

play06:58

son los sockets los sockets son bastante

play07:01

más especiales que las tuberías porque

play07:03

las tuberías te permiten comunicar

play07:04

procesos que están en la misma máquina

play07:06

en el mismo pc vale pero los sockets te

play07:09

permiten comunicar procesos que están en

play07:11

cualquier máquina del mundo siempre y

play07:13

cuando haya una red de comunicaciones

play07:15

para llegar hasta ahí o sea en principio

play07:17

los sockets sirven para poder comunicar

play07:19

pues dos peces entre sí no un proceso de

play07:22

un pc con un proceso de otro pc a través

play07:24

de una red pero es que también sirve

play07:26

para comunicar procesos que están en la

play07:28

misma máquina en el mismo pc entonces

play07:30

vamos a ver el ejemplo que queríamos

play07:31

hacer de los mensajes no queríamos tener

play07:33

un programa que reciba mensajes de

play07:35

muchos programas no sólo de uno como

play07:37

este caso entonces que es un socket

play07:39

exactamente pues un socket es la unión

play07:41

entre una dirección de una máquina y un

play07:43

puerto un puerto sirve para identificar

play07:46

a un proceso dentro de una máquina por

play07:48

ejemplo si en mi máquina hay un programa

play07:50

que está escuchando en el puerto 8000

play07:53

por ejemplo pues yo sé que la dirección

play07:55

de mi máquina más el puerto 8000

play07:57

equivale a ese programa que escucha en

play08:00

ese puerto

play08:01

y vamos a ver cómo sería un pequeño

play08:02

servidor de chat para poder mandarle

play08:05

mensajitos como hemos hecho aquí pero a

play08:07

través de más programas el servidor que

play08:10

tengo aquí implementado está hecho en

play08:12

java pero como funciona con sockets se

play08:14

puede hacer con cualquier lenguaje con

play08:16

cualquiera

play08:17

bien pues lo primero que tenemos aquí es

play08:18

una pequeña clase que sirve de

play08:20

envoltorio sobre un socket vale porque

play08:23

los sockets por defecto trabajan con

play08:25

bytes o sea nosotros podemos escribir

play08:27

chorros de bytes ahí en un socket y leer

play08:29

bytes aviv bytes a tope pero queremos

play08:32

escribir cadenas de texto para que sea

play08:34

más legible más fácil de entender no hay

play08:36

que escribir allí

play08:37

a raíz de bytes que es un poco

play08:39

complicado de pensar en eso lo que hará

play08:42

el servidor es escuchar en un puerto

play08:44

aquí en esta máquina en mi pc no pues

play08:46

entonces necesitamos darle como

play08:47

argumento un puerto entonces coge ese

play08:50

puerto y si es válido pues se pone a

play08:52

ejecutar si no cierra el programa lo que

play08:54

hacemos es básicamente ponernos a

play08:55

escuchar en ese puerto y cada vez que

play08:58

alguien se conecta a él pues empezamos a

play09:01

atenderlo no como si fuese eso es de

play09:03

toda la vida cliente servidor al el

play09:04

paradigma servidor cliente pues es lo

play09:06

mismo es esto

play09:07

nosotros obtendremos conexiones en un

play09:09

puerto y por cada conexión que llega

play09:11

nueva lo que haremos es atender a ese

play09:13

cliente a través de un hilo vale creamos

play09:15

un hilo para poder atender a ese cliente

play09:17

concreto porque puede haber varios a la

play09:19

vez por lo tanto un solo hilo sólo puede

play09:21

atender a un cliente así que nada

play09:23

esperamos por conexiones cuando llega a

play09:25

una conexión nueva ejecutamos la tarea

play09:27

que se encarga de manejar esa conexión

play09:30

la tarea es esta de aquí que lo único

play09:32

que hace es imprimir mensajes igual que

play09:35

hemos visto antes aquí solo hace eso

play09:37

imprimir mensajes imprimir mensajes que

play09:38

le van llegando y después le manda al

play09:40

cliente un mensaje indicando que ha

play09:43

recibido su mensaje sin más

play09:45

eso es digamos el protocolo de

play09:47

comunicaciones en este caso tenemos el

play09:49

servidor tenemos el cliente el cliente

play09:51

envía un mensaje al servidor el servidor

play09:53

le envía un mensaje recibido y se

play09:55

comunican así constantemente hasta que

play09:57

el cliente envía un mensaje en en cuyo

play10:00

caso ambos cierran la conexión ahora

play10:03

como hacemos clientes pues podemos

play10:05

hacerlo de nuevo en cualquier lenguaje

play10:06

en cualquier lenguaje porque usaremos

play10:08

sockets no usaremos nada específico de

play10:10

ese lenguaje sino sockets que son

play10:11

digamos están proporcionados por el

play10:14

sistema

play10:14

así que para los propósitos de este

play10:17

vídeo me he hecho dos clientes uno en

play10:18

python y otro en javascript entonces

play10:21

vamos a examinar un poco el cliente

play10:23

hecho en python después lo probaremos

play10:25

para ver cómo funciona vamos a ir de

play10:27

nuevo al main en este caso en lugar de

play10:29

necesitar un puerto para escuchar

play10:30

necesitaremos una dirección para

play10:32

conectarnos y un puerto una vez todo

play10:35

está correcto y estamos conectados pues

play10:36

empezamos a escribir aquí mensajes le

play10:39

vamos mandando a través del socket

play10:40

mensajes ahí a tope toma toma toma cada

play10:42

vez que mandamos un mensaje nos

play10:44

esperamos a recibir el mensaje que nos

play10:46

manda el servidor de recibido nos manda

play10:48

una pequeña cadena que indica que ha

play10:50

recibido nuestro mensaje vamos a

play10:52

probarlo vamos a ver cómo funciona

play10:53

entonces vamos a pasar del puerto 80 80

play10:57

el 8000 80 le pasamos este puerto nos

play11:01

dice que está corriendo en este puerto y

play11:03

en esta máquina porque no puede correr

play11:05

en otro lado evidentemente y está

play11:07

esperando por conexiones pues vamos a

play11:09

conectarnos a ese puerto vamos a irnos

play11:11

aquí a los clientes y vamos a ejecutar

play11:13

el cliente de payton para ello cogemos

play11:15

el cliente y le pasamos como máquina a

play11:18

donde queremos conectarnos éste

play11:20

localhost y el puerto 80 80 que es el

play11:24

que está escuchando nuestro servidor si

play11:25

le pasamos otro puerto por ejemplo 81

play11:27

ahí no hay nadie nos dirá pues no hay

play11:30

ningún servidor ahí pero si le pasamos

play11:32

uno correcto entonces estamos conectados

play11:35

veis aquí que obtenemos una nueva

play11:37

conexión el 127 001 es lo mismo que

play11:40

localhost es esta máquina entonces la

play11:42

conexión es desde esta máquina con lo

play11:44

cual aquí escribimos nuestro nombre de

play11:46

usuario como nos dice y nos dice que

play11:48

escribamos un mensaje y le damos enter

play11:50

para mandarlo pues vamos a poner mensaje

play11:52

como veis que obtenemos aquí el mensaje

play11:54

podemos ir mandando un montón de

play11:56

mensajes y veis que por cada mensaje

play11:58

obtenemos una cadena que nos indica que

play12:00

se ha recibido y el servidor va

play12:02

imprimiendo todos los mensajes que

play12:04

obtiene pues bien como os he dicho

play12:06

también tenemos un cliente que está

play12:08

hecho en javascript el cliente es

play12:10

idéntico vale es idéntico al de país y

play12:12

funciona sobre de no de no es lo mismo

play12:16

que payton es un intérprete pero en este

play12:18

caso de javascript así que igual que

play12:21

antes tenemos el servidor en java

play12:22

esperando conexiones vamos a conectarnos

play12:25

con paixón al puerto 80 80

play12:27

vamos a javascript también y vamos

play12:30

a conectarnos exactamente al mismo sitio

play12:32

al puerto 80 80 vamos a poner aquí por

play12:35

ejemplo antonio js como usuario y aquí

play12:39

vamos a poner antonio pues página de pay

play12:41

son ellos que se mandamos un mensaje un

play12:44

mensaje paixón aquí lo obtenemos vamos a

play12:47

mandar otro aquí mensaje javascript

play12:50

aquí lo obtenemos ya está tenemos aquí

play12:53

tres programas escritos en lenguajes

play12:55

diferentes comunicándose perfectamente

play12:57

entre sí todo esto gracias a los sockets

play13:00

y ahora me diréis por qué no has hecho

play13:02

que los mensajes que aparecen en el

play13:03

servidor aparezcan también en cada

play13:05

cliente pues porque sería más complicado

play13:07

necesitamos ponernos con programación

play13:09

paralela a tope para tener un hilo que

play13:11

escribe mensajes y otro que lee así que

play13:13

nada os dejo el código en la descripción

play13:15

si queréis escribir más clientes y

play13:17

queréis escribir más servidores podéis

play13:19

hacerlo siguiendo exactamente el mismo

play13:20

modelo que seguirá yo y os dejo también

play13:22

por aquí mis redes sociales

play13:24

os dejo también la música absolutamente

play13:26

todo lo que se ha usado en este vídeo

play13:27

del mismo modo recuerdo que tenéis el

play13:30

curso de sistemas operativos en la

play13:31

descripción si queréis profundizar en

play13:33

tuberías vais a programar tuberías

play13:35

manualmente con 'the así que nada no

play13:37

tenéis todos los enlaces en la

play13:38

descripción y nos vemos en el próximo

play13:40

vídeo

Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
comunicación programaslenguajes programaciónpipessocketssistemas operativoscursos onlinemáquina virtualcompiladoresservidoresclientes
هل تحتاج إلى تلخيص باللغة الإنجليزية؟