Loading

Module 1: Transmisión y programación

Apuntes
Study Reminders
Support
Text Version

Programación de sockets

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Programación de socket
Bienvenido de nuevo al curso en la red de sistemas y en el protocolo de Internet. Por lo tanto, hoyveremos alguna demostración de programación de redes. Por lo tanto, examinaremos la programación del socketen detalles. Y compruebe que con la ayuda de la programación de sockets, cómo puedeacceder a la capa de transporte de la pila de protocolos y puede ejecutar su propia aplicación en la parte superior dede la pila de protocolos de red para transferir algunos datos a o desde un sistema.(Consulte la hora de la diapositiva: 00:47)Así, comencemos nuestro viaje en la programación de sockets. Por lo tanto, para empezar como hemos vistoanteriormente o también hemos discutido anteriormente que toda esta pila de protocolos de red esimplementada dentro del núcleo del sistema operativo. Por lo tanto, en general tenemos cinco capasen la pila de protocolos TCP/IP de la que hemos hablado. Y en que cinco capas del protocolo TCP/IP deapilan esta capa física, y la parte de la capa de enlace de datos se almacenadentro del hardware.Considerando que la parte superior de la capa de enlace de datos principalmente una parte del MAC y el control de enlace lógico de, la capa de red y la capa de transporte se implementan dentro del espacio de kernel dedel sistema operativo. Y, a continuación, desde el espacio de usuario puede escribir varias aplicacionespara acceder a esta pila de protocolos. Por lo tanto, la aplicación tiene que interactuar con la capa de transporte depara enviar o recibir datos. Y como hemos aprendido ya en la capa de transporte de, tenemos dos protocolos diferentes, el protocolo de control de transmisión o el protocolo de datagrama o UDP deTCP y el usuario.Por lo tanto, hoy examinaremos que todo este espacio de kernel que está ahí dentro de nosotrostiene estas diferentes capas de la pila de protocolos, la capa de transporte, la capa de red y la partede la capa de enlace de datos que ya está implementada dentro del kernel del sistema operativo. Y veremos cómo puede hacer una interacción entre este espacio de usuario yla pila de protocolos que se implementa dentro del espacio del kernel con la ayuda de la programación de socket de. Ahora, curiosamente, veremos que cada vez que escriba una aplicación, la aplicación de red en el espacio de usuario, tiene que transferir o tiene que utilizarcierto tipo de funcionalidades que están disponibles en el kernel.Por lo tanto, necesita una interfaz entre el espacio de usuario y el espacio del kernel. Y recuerdeque aquí estamos hablando de un sistema operativo basado en UNIX. Y, en un sistema operativobasado en UNIX desde el espacio de usuario hasta el espacio del kernel, esa interacción se realizará conel conjunto de API a las que llamamos como llamada del sistema. Por lo tanto, la llamada al sistema transfiere algún requisito del usuarioal kernel correspondiente a las operaciones del kernel y realiza operaciones enel kernel de Linux o UNIX. Por lo tanto, toda esta pila de protocolos que se implementa dentro del kernel deharemos una interacción con esa pila de protocolo de red con la ayuda de las llamadas del sistema operativo.Así que, curiosamente solo un puntero para que explore más que puede mirar en toda esta implementación de pila de protocolo dedentro de un kernel de UNIX. Si descarga el origen del kernel de UNIXdentro del origen del kernel de UNIX, puede comprobar el módulo de red bajo la fuente de usuarioLinux net. Y puede ver toda esta implementación de la pila de protocolos del kernel allí.(Consulte el tiempo de la diapositiva: 03:51)Así que, estas cosas ya han aprendido acerca de que esta pila de protocolo TCP/IP en la capa de transporte dees multiplexada por capas de aplicación. Puede ejecutar varias aplicaciones endiferentes dispositivos. Ahora, la aplicación diferente puede ejecutar diferentes tipos de protocolos. Por lo tanto, sitiene una navegación o una aplicación HTTP que ejecutará TCP. Si tiene un archivode transferencia o un tipo de aplicación FTP que puede volver a ejecutar TCP. Si tiene alguna aplicacióncomo VoIP, puede utilizar UDP.Ahora, todas estas distintas instancias de capa de transporte de la pila de protocolos que interactúan conla capa IP. Ahora, cada vez que está hablando entre dos dispositivos, la capa IP se cambiay cada vez que tiene varias aplicaciones que se ejecutan en la parte superior de la capa IPo la capa de red de la pila de protocolos, se multiplexan con la ayuda dediferente tipo de protocolo. Por lo tanto, para diferenciar entre dos dispositivos en la capa IP, utilizamosesta dirección IP. En la conferencia posterior, siempre que discutamos sobre la capa de IP,discutiremos acerca de cómo puede configurar estas direcciones IP. Por lo tanto, por el momento sóloentiende que los diferentes dispositivos, están separados por las direcciones IP. Y, a continuación, en el lado de la aplicación, tenemos estos números de puerto que en realidad le ayudan a hacer la aplicación multiplexación de la capa.Así que, cuando hablamos de que el dispositivo A se está comunicando con el dispositivo Bdurante ese tiempo, en realidad es si está haciendo algún tipo de aplicación de navegación queestá utilizando el protocolo HTTP durante ese tiempo el dispositivo A, la aplicación que está utilizando el protocolo TCP deen un puerto 8081 en la máquina con la dirección IP 202.141.81.2, esinteractuando con el dispositivo B en la dirección IP 203.12.23.43 a través de un puerto 8080, donde el servidorHTTP es running.Del mismo modo, para la otra aplicación que forma esta aplicación que se ejecuta en el dispositivo A y la aplicaciónque ejecuta un dispositivo B, se pueden segregar con la ayuda de ese número de puerto.Y recuerde que cada vez que hablamos de este tipo de aplicación en un sistemabasado en UNIX, básicamente lo representamos en forma de proceso. Por lo tanto, hay varios procesos deque se ejecutan en máquinas diferentes. Y esos procesos quierencomunicarse entre sí y durante ese tiempo hacemos o aseguramos este proceso a la comunicación de proceso decon la ayuda de esa capa de transporte de la pila de protocolos.Por lo tanto, este proceso para procesar la comunicación se logra con la ayuda de esta dirección IP,que está ahí en la capa IP para identificar de forma exclusiva una máquina en la red. Y luego en una máquinahay varios procesos en ejecución, pueden utilizar protocolos diferentes. Algunos delos procesos pueden utilizar el protocolo TCP, algunos de los procesos pueden utilizar el protocolo UDP, por lo queque se segregan con la ayuda de los números de puerto.Ahora, vamos a ver qué es un socket. Por lo tanto, el socket es básicamente una conexión lógica de un proceso dea otro proceso. Por lo tanto, aquí puede ver que estas dos aplicaciones de navegación enlos dos dispositivos que están comunicando entre sí. Por lo tanto, tenemos el socketsocket-este socket rojo que está haciendo un conducto lógico entre la aplicación que esque se ejecuta en el puerto 8081 en la máquina 202.141.81.2 a una máquina en la que el correspondiente extremo dede ese conducto se está ejecutando en un puerto 8080 en una máquina con dirección IP 203.12.23.43. Así quede esa manera, podemos tener múltiples tales tuberías lógicas en la capa de transporte que llamamosel socket.Ahora, enviar los datos a través de Internet significa enviar los datos a través de estos conductos lógicos.Por lo tanto, estos tubos lógicos que llamamos como el socket que básicamente crea este extremo para terminar con la conexiónen caso de TCP o final para terminar la semántica de transmisión de datos en el caso de UDP atransferir los datos de una máquina o mejor decir un proceso que se ejecuta en una máquinaa otro proceso que se ejecuta en otra máquina.(Consulte el tiempo de la diapositiva: 08:29)Así que, aquí vamos a ver cómo podemos implementar un socket de este tipo en un sistema basado en UNIX.Así que, para eso utilizamos este concepto de programación de sockets. Por lo tanto, en un marco de programación de socket, tenemos un conjunto de llamadas del sistema que podemos ejecutar desde el programa C. Yesta llamada del sistema nos ayudará a obtener el servicio de la pila de protocolo TCP/IP que se implementadentro del módulo de red del kernel del sistema operativo.Así que, veamos cómo funciona todo esto. Por lo tanto, en la capa de transporte, estamos hablandode un servidor cliente de esta programación. Por lo tanto, tenemos un servidor donde la idea es que el servidorha abierto un puerto, anunció el puerto que este puerto en particular estoy escuchando yel cliente necesita hacer una conexión a ese puerto en particular.Ahora, en ese caso cómo funciona realmente el servidor. Por lo tanto, en el lado del servidor, primeroque hacer una llamada al sistema de socket. Por lo tanto, la llamada al sistema de socket, creará la apertura del lado del servidordel conducto lógico y enlazará el socket con la pila de protocolo TCP/IP.Así que, para enlazar el socket con la pila de protocolo TCP/IP, tiene que llamar a esta función de enlace.Por lo tanto, esta función de vinculación, lo que hará que con el número de puerto que está especificandoenlazará ese número de puerto con el socket, de modo que creará un final lógico de la conexiónen el lado del servidor.Así que, basta con pensar en el servidor de esta manera que el servidor siempre está en ejecución, y el servidorrealmente necesita anunciar que oye, estoy escuchando en este puerto en particular, diga el puerto8080. Así que, si alguien quiere hablar conmigo, puede enviar datos en el puerto 8080. Por lo tanto, este anuncio deque tiene que hacer a través de este enlace y una llamada al sistema de escucha que tenemosaquí. Por lo tanto, la llamada al sistema de enlace en realidad enlaza el puerto con el extremo de socket correspondiente,y la llamada al sistema de escucha le ayudará sólo para hacer que el servidor vaya en el estado de escucha.Por lo tanto, el servidor ahora dice enlazar ese puerto 8080, y está a la escucha de la conexiónentrante.Ahora, vamos a movernos en el lado del cliente. En el lado del cliente tiene la llamada al sistema de socket. Por lo tanto,esta llamada al sistema de socket vuelve a crear un extremo del lado del cliente del conducto lógico. Y después de eso enun sitio de cliente no necesita este enlace y escucha, porque sólo tiene que entender la naturaleza dela comunicación entre el servidor y el cliente. Por lo tanto, el servidor está realmenteanunciando o haciendo un anuncio que oye, estoy escuchando en este puerto 8080. Por lo tanto,cualquiera quiere conectarse a mí, puede conectarse directamente a mí en el puerto 8080 que el cliente deno necesita saber porque el cliente está realmente iniciando la conexión con el servidor.Debido a que el cliente está iniciando la conexión con el servidor, el cliente no necesitahacer este tipo de anuncio. Por lo tanto, el cliente puede iniciar la conexión con el puerto deque el servidor anuncia y por eso no necesita el enlacey la llamada de escucha en el lado del cliente. Por lo tanto, en el lado del servidor, necesita el enlace y la llamada de escucha depara que el servidor pueda enlazarse a un puerto a un puerto fijo y puede anunciarese puerto fijo al exterior que cualquiera puede conectarse a ese puerto en particular creando un socket.Ahora, después de que se hayan hecho estas cosas, después de haber creado el extremo del socket en el lado del cliente, desde el lado del cliente hace esta llamada de conexión para iniciar una conexión con el número de puertoanunciado por el servidor. Ahora, eso es en realidad una especie de cosas bien conocidas de, como decir que sabes que si estás ejecutando un servidor HTTP, entonces erescorriendo en el puerto 80 o estás corriendo en el puerto 8080 o en algunos otros puertos que está siendoanunciado por el servidor. Por lo tanto, el cliente ya sabe que cuál es la dirección IP donde se ejecutael servidor y cuál es el número de puerto en el que se ejecuta el servidor. Por lo tanto, el cliente deinicia una llamada de conexión y esta conexión realiza una conexión con el servidor. Por lo tanto, una vez que el servidor obtiene esta conexión, hace una llamada de aceptación.Ahora, en caso de un tipo de protocolo TCP dentro de que se conecta y acepta, usted tiene el procedimiento de apretón de manos TCPde tres maneras que hemos discutido. Por lo tanto, el cliente inicia la conexiónenviando un paquete SYN, el servidor acepta la conexión devolviendoun ACK; y también iniciando la conexión con el lado del cliente enviando otro SYN. Por lo tanto,estamos teniendo un SYN más ACK del servidor al cliente, y luego, finalmente, el clienteenvía un acuse de recibo, de modo que de esta manera, de esta forma, tres veces el handshaking de TCPque ocurre cuando se está haciendo esta llamada al sistema de conexión en el lado del cliente yaceptar la llamada en el lado del servidor para hacer la conexión en caso de un TCP.Ahora, una vez que se establece esta conexión, entonces usted puede hacer que esta llamada de envío y recepción aenvíe los datos y reciba los datos. Por lo tanto, cada vez que realiza una llamada de envío, envíalos datos; en el otro extremo puede recibir esos datos haciendo una llamada al sistema de recepción opuede hacer un envío al del lado del servidor para enviar algunos datos del servidor al cliente de. Y el cliente acepta los datos de esta llamada al sistema de recepción. Por lo tanto, una vez que se haya realizado esta comunicación de datos, realice esta llamada de cierre, finalmente la llamada de cierre para cerrar la conexióncorrespondiente, de modo que todo este flujo de programación de socket funcione.Ahora, vamos a ver cómo va a escribir este sistema en el formato de una sintaxis deC.(Consulte el tiempo de la diapositiva: 14:07)Así que vamos a empezar con diferentes tipos de sockets, ya que hemos discutido desde hace tiempo que el Internet dees un intercambio entre rendimiento y fiabilidad y es por eso que tenemos dos protocolos diferentesen la capa de transporte, el control de transmisión o TCP o el protocolo de datagrama de usuario dey la UDP. Ahora, algunas aplicaciones requieren un rendimiento preciso decomo las aplicaciones multimedia y otras requieren fiabilidad como una transferencia de archivos. Y por lo tanto tenemos dos servicios como un protocolo de transmisión fiableo TCP tipo de protocolo y el protocolo de transmisión no fiable como un protocolo UDP.Ahora, por consiguiente tenemos estos dos tipos diferentes de sockets; un socket que llamamos como el socket de corrienteque se inicia por la corriente de calcetín. Por lo tanto, esta corriente de calcetín es, crea un socketque es fiable y orientado a la conexión. Por lo tanto, es necesariamente un tipo de socket TCP. Enla otra mano, tenemos este socket basado en UDP que es poco fiable y sin conexiónque llamamos como un socket de datagrama, que se denomina como SOCK_DGRAM, de modo que nosotrostenemos dos grandes tipos de zócalo, socket de corriente y el socket de datagrama.Aparte de eso tenemos un tercer tipo de socket que se llama zócalo crudo. Utilizando el socket deen bruto, puede pasar por alto la capa de transporte y puede interaccionar directamentecon la capa IP. Por lo tanto, no vamos a discutir esta toma cruda aquí en detalles. Vamos auna visión general acerca de este socket de corriente y el socket de datagrama.(Consulte la hora de la diapositiva: 15:35)Ahora, siempre que esté declarando un socket, lo que puede hacer puede declarar una variable muyde tipo entero de tipo entero de variable que contenga el ID de socket queva a definir. Por lo tanto, esta llamada al sistema de socket toma estos parámetros, tres parámetros: el dominio, el tipo y el protocolo. Ahora, crea un socket con esta llamada al sistema de socket.Ahora, este parámetro de dominio es el dominio de comunicación. Normalmente, se utiliza el protocolo IPv4o la dirección IPv4. Por lo tanto, establecemos este valor de dominio como AF_INET que es unestándar por el momento la mayor parte del tiempo que utilizará AF_INET. Siempre puede explorar lo queson las otras posibilidades en este campo de dominio.A continuación, el tipo del campo es el tipo de la corriente SOCK o el datagrama SOCKen función de si va a crear un socket TCP o un socket UDP. Y, por último, el protocoloespecifica la familia de protocolos que vamos a utilizar. Normalmente se establece en 0. Por lo tanto,le sugerirá que explore esto por lo que establecemos el campo de protocolo en 0 en la mayoría de los casos de.Ahora, una vez que se ha realizado la llamada al sistema de socket, ha creado el socket. En el sitio del servidortiene que crear las siguientes llamadas para enlazar, para enlazar el puerto con el socket en particular. Por lo tanto, esta llamada al sistema de enlacefunciona de este modo devuelve el estado de si el enlace es satisfactorio ono. Por lo tanto, puede tener el estado como variable entera. Y el enlace toma tres parámetrosel ID de socket. El ID de socket devuelto por esta llamada al sistema de socket y yeah el ID de socketque devuelve esta llamada al sistema de socket, por lo que este valor es el ID de socket que se ha devueltoque puede poner aquí.Ahora, ese socket en particular se enlaza a un tipo de puerto de dirección de variable que es una estructura.Por lo tanto, esta estructura contiene struct sockaddr en. Por lo tanto, esta estructura contiene la dirección IPy el puerto de la máquina. Por lo tanto, normalmente se establece en inaddr any para elegir una dirección local. Por lo tanto, silo ejecuta como inaddr any, elegirá la dirección IP que utiliza la máquinay, a continuación, el tamaño. Por lo tanto, el tamaño es el tamaño de dirección de esta estructura de sockaddr.
Socket Programming-Parte 2
Por lo tanto, la estructura sockaddr tiene un aspecto similar al que realmente almacena la dirección IPy el número de puerto correspondiente. Tiene estos tres campos, uno es la familia del pecado. Por lo tanto, estaes la familia de direcciones. Por lo tanto, la familia de direcciones lo mantenemos como AF INET para el protocolo IPv4que vamos a utilizar. Por lo tanto, este concepto de IPv4 vamos a discutir en la conferencia posterior de. Por lo tanto, cuando hablamos del esquema de direccionamiento de IP, normalmente engeneral en la red de hoy en día usamos la mayoría de direcciones IPv4. Por lo tanto, las familias de direccionesnormalmente se establecen en AF INET. .Entonces tenemos este socket en la dirección punto s addr es la dirección fuente. Por lo tanto, la direcciónde origen lo mantenemos como inaddr cualquiera como he mencionado para elegir la dirección local de la máquinadonde estoy ejecutando el código. Y luego tengo el número de puerto en las variablessin puerto el número de puerto. Por lo tanto, ahora un hecho interesante es aquí que necesitamos utilizar esta funciónllamada h a ns para convertir el número de puerto de orden de bytes de host a orden dede byte de red. Ahora, veamos rápidamente que cuál es el orden de bytes de origen y el orden dede byte de red.(Consulte la hora de la diapositiva: 19:25)Así que, en un sistema informático, el sistema puede ser de dos tipos, ya sea que sea un pequeño sistemao puede ser un sistema big endian. Ahora, la diferencia entre un pequeño sistema endiano un sistema big endian es algo así. Sí, es como cómo se están almacenandolos datos en la memoria. Ahora, en caso de un pequeño sistema endian, usted almacenará los datosde izquierda a derecha lo siento de derecha a izquierda. Por lo tanto, este 0D se almacenará rápido y luego almacenará0C, luego almacenará 0B, y finalmente, almacenará 0A.Considerando que, en un sistema big endian, es justo lo contrario. Por lo tanto, se deja a la asociatividad correctade las cosas. Por lo tanto, en un registro si sus datos son algo así, en la memoria primerotienda 0A, luego almacenará 0B, luego almacenará 0C y finalmente, almacenará 0D. Por lo tanto, esa maneradependiendo de si su máquina está siguiendo una plataforma little endian o una gran plataformaendian, la representación de los datos dentro de la memoria puede ser cambiada.Así que, asuma una comunicación de un pequeño endian a un gran sistema endian. Ahora, si estátransfiriendo datos de un sistema pequeño, transferirá los datos en forma de una corriente de bytes deen la secuencia de bytes. Por lo tanto, primero dirás y posiblemente 0D, luego 0C,entonces 0B, luego 0A. Y cada vez que el sistema big endian obtendrá 0D, pondrá el 0D primero,entonces el 0C segundo y de esa manera cada vez que lo interpretará interpretará el númerojusto en la dirección opuesta. Por lo tanto, de esa manera puede haber una especie de inconsistenciacada vez que se está transfiriendo el sistema, por lo que es por eso que usamos este concepto de orden de bytes post-byte aorden de bytes de red, la idea es que el host puede ser pequeño endian o big endian.(Consulte la hora de la diapositiva: 20:57)Tienen una especie de orden de bytes. Ahora, la red es a tiene un orden de bytes fijo. Por lo tanto, siempre queesté transfiriendo los datos a través de la red, lo convertirá del orden de bytes de host ael orden de bytes de red, transferirlo a través de la red. En el otro extremo, se captan los datoslo convierten de nuevo en el orden de bytes del host en función de si el sistema es pequeño endian obig endian y lo almacena allí. Así que este tipo de inconsistencia que puede venira la diferencia de representación de dos máquinas que pueden ser resueltas. Por lo tanto, es la idea deconvertir el número de puerto del orden de bytes de host a la orden de bytes de red.Así que, a continuación, se muestra un ejemplo de cómo puede iniciar la variable de dirección. Por lo tanto, usted configura el puertoen 3028 que es usted lo está tomando como una variable entera entonces usted tiene esta familia de pecado AFINET que he discutido, el punto de dirección de pecado se dirige a inaddr cualquiera para tomar la direcciónlocal. Si lo desea, también puede poner alguna dirección IP allí, pero esa dirección IP necesitacoincidir con la dirección IP utilizada por la interfaz de red. Y luego en el puerto de pecadohace esta llamada a h a ns sobre el número de puerto para convertirlo a la orden de bytes de red.(Consulte el tiempo de la diapositiva: 22:15)Bueno, ahora para aceptar una conexión de socket, por lo que en el lado del cliente se crea una direcciónde cliente. Ahora, el servidor que está escuchando en este socket en particular. Por lo tanto, esta función de escuchatiene un parámetro llamado 5 aquí. Por lo tanto, este parámetro en particular indica que la cantidad de conexión máxima dese puede retroceder cuando varios clientes intentan conectarse ael servidor. Y luego toma este tamaño de esta variable de dirección que ha declarado yhace una llamada de aceptación. Por lo tanto, esta llamada de aceptación tomará el fd sock donde el socket está a la escuchala dirección del cliente que se proporcionará. Por lo tanto, cuando el cliente se conecte la direccióndel cliente se almacenará en esta variable, y la longitud de la dirección del cliente.Ahora, esta llamada de aceptación siempre que se está iniciando una conexión, como he mencionado,el servidor debe siempre en la modalidad en la que está a la espera de cualquier conexión entrantey los clientes necesitan iniciar la conexión. Por lo tanto, en consecuencia tenemos dos tipos de conexiónllamada activa abierta y la pasiva abierta. Ahora, como he mencionado, el servidor denecesita anunciar que su dirección permanece en el estado abierto y espera cualquier conexiónentrante, de modo que ese es el tipo de abierto pasivo. Y el cliente sólo abre una conexióndonde es necesaria la transferencia de datos que es el tipo de abierto activo. Y la conexiónla inicializa el cliente.(Consulte la hora de la diapositiva: 23:41)Ahora, estos son el formato de transferencia de datos. Por lo tanto, tenemos dos tipos diferentes de socket; el socket de corrientey el socket de datagrama. En el caso de un socket de corriente, puede utilizar la funciónllamada lectura y grabación proporcionando el identificador de socket. Por lo tanto, aquí hay un hecho interesante dede que cada vez que acepta una conexión, está obteniendo un nuevo ID de socket de. Por lo tanto, por qué está obteniendo un nuevo ID de socket, porque el servidor está a la escucha en un socket de; ahora, cuando el cliente está iniciando, puede haber varios clientes quese conectan simultáneamente. Ahora, cuando varios clientes se conectan simultáneamente,necesita crear un conducto lógico independiente para separar el cliente, de modo que en realidad se indiquepor la dirección de socket que está escrita por esta llamada al sistema de aceptación.Por lo tanto, la llamada al sistema de aceptación devolverá una dirección y esa dirección en particular seráasignada a la nueva fd de sock y mientras envía los datos que utiliza ese nuevo id de socketporque eso ha creado fin a la corriente de extremo o final para finalizar la conexión con un cliente específico yenviará un mensaje. Por lo tanto, para el tipo de corriente de socket, puede utilizar la función de lectura y grabación depara leer datos de un almacenamiento intermedio o para grabar datos en un almacenamiento intermedio. Para el socket de datagramapuede utilizar la función llamada recibir de y enviar a; recibir de la funciónpara recibir datos del socket o enviados a la función para enviar datos a ese socketen particular.(Consulte la hora de la diapositiva: 25:09)Ahora, aquí hay algunos, por lo que le mostraré alguna demostración de todo lo que está. Por lo tanto, aquí hay un enlaceque puede seguir para aprender la programación de sockets en más detalles. Por lo tanto, lo que voy ale sugerirá que vaya a estos enlaces particulares y empiece a escribir su propia programación de redutilizando el socket. Por lo tanto, vamos a ir rápidamente a alguna demostración de toda esta idea de la programación de socket de.(Consulte el tiempo de la diapositiva: 25:37)Por lo tanto, primero miraremos al servidor UDP y a un cliente UDP correspondiente. Por lo tanto, vamos a abriren primer lugar en el servidor UDP.(Consulte el tiempo de la diapositiva: 26:05)Así que, aquí está el código para el servidor UDP. Por lo tanto, en el código del servidor UDP, puede ver quehemos incluido alguna cabecera, estos son el tipo de cabeceras estándar que tenemos que incluir. Y luego dentro de la función principal, estamos declarando toda la cosa. Por lo tanto, en la función principal de, tenemos esto que primero definimos un socket, que es el struct sockaddr eny la dirección del servidor correspondiente. A continuación, estamos definiendo un identificador de socket. Y nosotrosestamos definiendo un número de puerto.Ahora, aquí estamos haciendo una llamada al sistema de socket. En la llamada al sistema de socket,tiene este AF INET el parámetro que hemos mencionado necesitamos para especificar el socket degram. Estamos especificando porque estamos intentando crear un socket UDP y el parámetrofinal es igual a 0. El parámetro 0 que enviamos para el campo de protocolo que hemos mencionado. A continuación, una vez que se crea el socket, si hay un error, se imprime un mensaje de error.(Consulte la hora de la diapositiva: 27:17)De lo contrario, declaramos la dirección del servidor como hemos comentado anteriormente. Por lo tanto, lo declaramos comola familia de protocolo como AF INET la dirección como inaddr any con una dirección de esta máquinay luego el número de puerto. A continuación, hacemos la llamada al sistema de vinculación. La llamada al sistema de vinculación es paraenlazar el socket con el número de puerto correspondiente que estamos especificando como un argumento de línea de mandato. Y por último, hacemos una llamada a una función llamada setsockopt, este setsockoptes para establecer alguna opción en el socket, aquí hemos establecido la opción es so_reuse addr. Este addr deso_reuse nos ayudará a utilizar el mismo puerto para varias conexiones y queno es una idea segura, pero en algún momento puede utilizar eso.Por lo tanto, lo que puede hacer una vez que haya creado el socket en el lado del servidor, puede hacer directamentehacer la llamada a la recepción de la función para recibir los datos. Y esta función de recepción decontendrá los detalles del cliente. Por lo tanto, esta es la dirección del cliente que está clara en la función de formulario de recepción de. Y una vez que está recibiendo datos estamos imprimiendo algunos datos yhaciendo un envío para llamar. Por lo tanto, esto enviar a llamar es enviar los datos al cliente correspondiente,de modo que sea el puerto en el lado del servidor.Después de eso estamos creando la dirección del servidor utilizando que el establecimiento de la familia de pecado la direccióndel host y el puerto del servidor. Por lo tanto, el valor que proporciona el cliente ena través de la línea de mandatos. Por lo tanto, después de que una vez que haya obtenido la dirección del servidor, de nuevono necesita iniciar una conexión, puede hacer directamente el envío para llamar para enviaralgunos datos. Así que, desde aquí estamos haciendo un envío para llamar. Por lo tanto, esto enviar a llamar es enviar los datos deal socket en particular con esta dirección de servidor que estamos especificando aquí.Así que, ahora vamos a ejecutar primero el servidor. Por lo tanto, de acuerdo con nuestra sintaxis, nosotros tenemos que ejecutarel servidor y especificar una dirección de puerto donde el servidor se conectará a sí mismo el enlace a través dela llamada al sistema de vinculación. Por lo tanto, déjennos dar el número de puerto como 2333. Por lo tanto, el servidor ahora está en ejecución. Ahora, desde el lado del cliente podemos ejecutar el cliente. Y estamos ejecutando el servidoren la misma máquina, por lo que el nombre de host del servidor lo puede dar como host local. Y paraestá ejecutando el servidor en el puerto 2333; en el puerto 2333, de modo que podemos proporcionar el puertodel servidor como 2333. Por lo tanto, ha enviado un mensaje al servidor que puede ver que el servidor ha recibidoel mensaje del cliente y devuelve ese mensaje. Por lo tanto, el clienteha recibido el mensaje y lo ha impreso.Por lo tanto, puede volver a ejecutar el cliente. Y puedes ver que ha recibido un mensaje. Ahora,tenga en cuenta que una cosa aquí está imprimiendo el IP del servidor IP del cliente y el puertodel cliente, la IP del cliente es la IP local de esta máquina. Y un puerto de cliente siempre que estemosejecutando un cliente múltiple, el código del cliente se cambia. Ahora, en el lado del cliente como el clienteno se enlaza a nuestro puerto bien conocido durante el tiempo de ejecución, el cliente elige al azaruna dirección de puerto e inicia la transferencia de cliente desde esa dirección de puerto en particular, por lo que espor qué se cambia una dirección de puerto diferente.Por lo tanto, si lo vuelvo a ejecutar varias veces a la vez, la dirección del puerto se cambia. Por lo tanto, endiferentes instancias toma un puerto diferente. Por lo tanto, se trata de una demostración sobre el servidor UDP y un cliente UDP deque es posiblemente la forma más simple de la programación de socket. Nosotroscompartiremos el código con usted, le pediremos que navegue a través del código que se ejecuta en su propia máquinay que vea lo que está sucediendo y lo entienda más detalles. Por lo tanto, en la siguiente clase, le mostraremos la demostración sobre el servidor TCP, el cliente TCP y algunas variantes del servidor TCP dey el cliente TCP.Gracias a todos por asistir a la clase.