Cómo programar socket en tableta
La interfaz Socket es la API de la red TCP/IP. La interfaz Socket define muchas funciones o rutinas que los programadores pueden utilizar para desarrollar aplicaciones en la red TCP/IP. Consulte la siguiente información: Una toma de corriente es muy similar a una toma de teléfono. Tomemos como ejemplo una red telefónica nacional. Las dos partes de una llamada telefónica son equivalentes a procesos que se comunican entre sí. El código de área es su dirección de red, un conmutador en una unidad en el área es equivalente a un host y el número dentro de la oficina asignado por el host a cada uno; usuario es equivalente a un número de socket. Antes de que cualquier usuario realice una llamada, primero debe poseer un teléfono, lo que equivale a solicitar un enchufe; al mismo tiempo, debe conocer el número de la otra parte, lo que equivale a que la otra parte tenga un enchufe fijo; Luego marque una llamada a la otra parte, lo que equivale a emitir una solicitud de conexión (si la otra parte no está en la misma área, también debe marcar el código de área de la otra parte, lo que equivale a proporcionar una dirección de red). Si la otra parte está presente e inactiva (equivalente a que el otro host de comunicación esté encendido y pueda aceptar solicitudes de conexión), levante el auricular del teléfono y las dos partes podrán hablar oficialmente, lo que equivale a una conexión exitosa. El proceso de una llamada entre las dos partes es el proceso en el que una parte envía una señal al teléfono y la otra parte recibe la señal del teléfono, lo que equivale a enviar datos al enchufe y recibir datos del enchufe. Una vez finalizada la llamada, una de las partes cuelga el teléfono equivale a cerrar el enchufe y cancelar la conexión. En el sistema telefónico, el usuario medio sólo puede sentir la existencia del teléfono local y el número de teléfono de la otra parte. El proceso de establecimiento de una llamada, el proceso de transmisión de voz y los detalles técnicos de todo el sistema telefónico son transparentes para él. Esto también es muy similar al mecanismo del casquillo. Socket utiliza las instalaciones de comunicación de Internet para lograr la comunicación del proceso, pero no le importan los detalles de las instalaciones de comunicación, siempre que las instalaciones de comunicación puedan proporcionar suficientes capacidades de comunicación, está satisfecho. En este punto, tenemos una descripción intuitiva del socket. En resumen, el socket proporciona esencialmente un punto final para la comunicación del proceso. Antes de procesar la comunicación, ambas partes primero deben crear un punto final; de lo contrario, no podrán establecer contacto ni comunicarse entre sí. Al igual que antes de realizar una llamada, ambas partes deben tener un teléfono. Dentro de Internet, cada socket utiliza una descripción semirelacionada: (protocolo, dirección local, puerto local). Un socket completo tiene un número de socket local único, que es asignado por el sistema operativo. Lo más importante es que los sockets están diseñados para el modelo cliente/servidor, proporcionando diferentes llamadas al sistema de sockets para programas cliente y servidor. El cliente solicita aleatoriamente un socket (equivalente a que una persona que quiera hacer una llamada pueda marcar una llamada en cualquier teléfono de Internet) y el sistema asigna un número de socket al servidor que tiene un socket reconocido globalmente y cualquier cliente puede enviar un socket; solicitud de conexión al mismo y solicitudes de información (equivalente a que un teléfono llamado tenga un número de teléfono conocido por la parte que llama). Socket utiliza el modelo cliente/servidor para resolver inteligentemente el problema de establecer conexiones de comunicación entre procesos. Es muy importante que la semirelevancia del socket del servidor sea reconocida globalmente. Es posible que los lectores deseen considerar cómo establecer comunicación entre dos procesos de usuario completamente aleatorios. Si el enchufe de ninguna de las partes está arreglado, es como si las dos partes en el teléfono no supieran el número de teléfono del otro y fuera imposible hablar. Ejemplos de sockets en aplicaciones prácticas La interfaz Socket es el método más utilizado para acceder a Internet. Si tiene un host que acaba de configurarse con el protocolo TCP/IP y su dirección IP es
y ejecuta ftp. Obviamente no se puede conectar. Porque " . .
. "Este host no ejecuta el software de servicio FTP. De manera similar, cuando ejecute software de navegación como Netscape en otro o en el mismo host, ingrese "Entrar en scape". Estos hosts generalmente ejecutan software de múltiples servicios y brindan varios servicios al mismo tiempo.
Cada servicio abre un socket y está vinculado a un puerto. Diferentes puertos corresponden a diferentes servicios. Socket es tal como su significado original en inglés, como un zócalo de múltiples orificios. Un host es como una habitación llena de varios enchufes. Cada enchufe tiene un número. Algunos enchufes proporcionan
voltios de alimentación de CA, otros proporcionan
voltios de alimentación de CA y otros proporcionan
voltios de alimentación CA. Programas de televisión por cable. El software del cliente conecta los enchufes en enchufes con diferentes números para obtener diferentes servicios. El principio de desarrollo de un programa modelo Servidor-Cliente: el servidor usa ServerSocket para escuchar el puerto especificado. El puerto se puede especificar a voluntad (porque
los siguientes puertos generalmente son puertos reservados y no se pueden usar en. En algunos sistemas operativos, se recomienda utilizar un puerto mayor que
) y esperar la solicitud de conexión del cliente. Una vez que el cliente se conecta, se genera la sesión; la conexión está cerrada. El cliente utiliza Socket para emitir una solicitud de conexión a un determinado puerto de un servidor en la red. Una vez que la conexión se realiza correctamente, se abre la sesión y se cierra el Socket. El cliente no necesita especificar el puerto abierto y, por lo general, asigna temporal y dinámicamente uno o más puertos. La interfaz Socket es la API de la red TCP/IP. La interfaz Socket define muchas funciones o rutinas que los programadores pueden utilizar para desarrollar aplicaciones en la red TCP/IP. Para aprender a programar redes TCP/IP en Internet, debe comprender la interfaz Socket. Los diseñadores de la interfaz Socket primero colocaron la interfaz en el sistema operativo Unix. Si comprende la entrada y salida del sistema Unix, es fácil entender Socket. La transmisión de datos de Network Socket es un tipo especial de E / S, y Socket también es un descriptor de archivo. Socket también tiene una llamada de función Socket() similar a abrir un archivo. Esta función devuelve un descriptor de Socket entero. El establecimiento de conexión posterior, la transmisión de datos y otras operaciones se implementan a través de este Socket. Hay dos tipos de Socket comúnmente utilizados: Socket de transmisión (SOCK_STREAM) y Socket de datagrama (SOCK_DGRAM). Streaming es un Socket orientado a la conexión, que está dirigido a aplicaciones de servicios TCP orientadas a la conexión; Datagram Socket es un Socket sin conexión, que corresponde a aplicaciones de servicio UDP sin conexión. Creación de socket Para crear un Socket, el programa puede llamar a la función Socket, que devuelve un identificador similar a un descriptor de archivo. El prototipo de la función de socket es: intsocket (intdomain, inttype, intprotocol domain) especifica la familia de protocolos utilizada, generalmente PF_INET, que representa la familia de protocolos de Internet (la familia de protocolos TCP/IP especifica el tipo de socket: SOCK_STREAM o); SOCK_DGRAM, Socket La interfaz también define un Socket sin formato (SOCK_RAW), que permite que los programas utilicen protocolos de bajo nivel. Al protocolo generalmente se le asigna el valor "
". La llamada a Socket() devuelve un descriptor de socket entero, que puede utilizar en llamadas posteriores. El descriptor de Socket es un puntero a una estructura de datos interna, que apunta a la entrada de la tabla de descriptores. Al llamar a la función Socket, el cuerpo de ejecución del socket creará un Socket. De hecho, "crear un Socket" significa asignar espacio de almacenamiento para una estructura de datos de Socket. El ejecutivo de Socket gestiona la tabla de descriptores por usted. Una conexión de red entre dos programas de red incluye cinco tipos de información: protocolo de comunicación, dirección de protocolo local, puerto de host local, dirección de host remoto y puerto de protocolo remoto. La estructura de datos de Socket contiene estos cinco tipos de información.
Los sockets también se utilizan ampliamente en el software de medición. Una comprensión profunda de la programación de sockets consiste básicamente en varias operaciones básicas, como escuchar, aceptar, enviar y escribir. Para la programación de redes, también debemos llamarlo TCP/IP. Parece que ya no existen otros protocolos de red. Para TCP/IP, también conocemos TCP y UDP. El primero puede garantizar la precisión y confiabilidad de los datos, mientras que el segundo permite la pérdida de datos. Finalmente, también sabemos que antes de establecer una conexión, debemos conocer la dirección IP y el número de puerto de la otra parte. Además, los programadores comunes no saben mucho y, en muchos casos, este conocimiento es suficiente. Como máximo, al escribir un programa de servicio, se utilizarán varios subprocesos para manejar el acceso simultáneo. También conocemos los siguientes hechos:
. Un número de puerto específico no puede ser utilizado por múltiples programas. Por ejemplo, si IIS ocupa el puerto, entonces Apache no puede utilizar también el puerto.
. Muchos firewalls solo permiten que los paquetes pasen a puertos de destino específicos.
. Después de que el programa de servicio escuche un determinado puerto y acepte una solicitud de conexión, generará un nuevo socket para procesar la solicitud. Entonces surge una pregunta que me ha desconcertado durante mucho tiempo. Si se crea un socket y se vincula al puerto
, ¿significa que el socket ocupa el puerto
? Si es así, cuando acepta una solicitud, ¿qué puerto utiliza el nuevo socket (siempre pensé que el sistema le asignaría un número de puerto libre de forma predeterminada)? Si es un puerto inactivo, no debe ser el puerto
, por lo que el puerto de destino de futuros paquetes TCP no será el
: ¡el firewall definitivamente evitará que pase! De hecho, podemos ver que el firewall no bloquea dichas conexiones, y este es el método de manejo y solicitud de conexión más común. Lo que no entiendo es por qué el firewall no bloquea dichas conexiones. ¿Cómo determina qué conexión se genera debido al puerto de conexión? ¿Hay alguna marca especial en el paquete TCP? ¿O el firewall recuerda algo? Más tarde, estudié detenidamente los principios de la pila de protocolos TCP/IP y obtuve una comprensión más profunda de muchos conceptos. Por ejemplo, TCP y UDP pertenecen a la capa de transporte y ambos se basan en la capa IP (capa de red). La capa IP es la principal responsable de la transmisión de paquetes de datos entre nodos (de extremo a extremo). El nodo aquí es un dispositivo de red, como una computadora. Debido a que la capa IP solo es responsable de enviar datos a los nodos y no puede distinguir entre las diferentes aplicaciones anteriores, los protocolos TCP y UDP les agregan información del puerto, y el puerto identifica una aplicación en un nodo. Además de agregar información del puerto, el protocolo UPD básicamente no procesa ningún dato en la capa IP. El protocolo TCP también agrega controles de transmisión más complejos, como una ventana deslizante de transmisión de datos (SliceWindow) y mecanismos de confirmación de recepción y reenvío para lograr una transmisión confiable de datos. No importa qué tipo de flujo de datos TCP estable vea la capa de aplicación, lo que se transmite a continuación son paquetes de datos IP uno por uno, y los datos deben ser reorganizados mediante el protocolo TCP. Por lo tanto, tengo motivos para sospechar que el firewall no tiene suficiente información para juzgar la información del paquete TCP, excepto la dirección IP y el número de puerto. Además, también hemos visto que los llamados puertos se utilizan para distinguir diferentes aplicaciones para que diferentes paquetes IP puedan reenviarse correctamente cuando llegan. TCP/IP es solo una pila de protocolos, al igual que el mecanismo operativo de un sistema operativo. Debe implementarse de manera concreta y al mismo tiempo proporcionar una interfaz de operación externa. Así como el sistema operativo proporciona interfaces de programación estándar, como la interfaz de programación Win, TCP/IP también debe proporcionar interfaces de programación externas. Esta es la interfaz de programación Socket, ¡así que eso es lo que es! En la interfaz de programación de Socket, el diseñador propuso un concepto muy importante, es decir, socket.
Este socket es muy similar a un identificador de archivo. De hecho, en el sistema BSD, se almacena en la misma tabla de identificadores de proceso que el identificador de archivo. Este zócalo es en realidad un número de serie que indica su posición en la tabla de manijas. Hemos visto esto mucho, como identificadores de archivos, identificadores de ventanas, etc. Estos identificadores en realidad representan ciertos objetos específicos en el sistema y se usan como parámetros en varias funciones para operar en objetos específicos; esto es en realidad un problema con el lenguaje C. En el lenguaje C, este identificador es en realidad este puntero, que en realidad es. un puntero de objeto. Ahora sabemos que los sockets no están necesariamente relacionados con TCP/IP. Cuando se diseñó la interfaz de programación Socket, se esperaba que también pudiera adaptarse a otros protocolos de red. Por lo tanto, la aparición del socket solo facilita el uso de la pila de protocolos TCP/IP. Abstrae TCP/IP y forma varias interfaces de funciones básicas. Como crear, escuchar, aceptar, conectar, leer y escribir, etc. Ahora entendemos que si un programa crea un socket y le permite escuchar en el puerto
, en realidad está declarando su ocupación del puerto a la pila del protocolo TCP/IP. De ahora en adelante, todos los paquetes TCP destinados al puerto
se reenviarán a este programa (el programa aquí, debido a que utiliza la interfaz de programación Socket, es procesado primero por la capa Socket). La llamada función de aceptación en realidad abstrae el proceso de establecimiento de la conexión TCP. El nuevo socket devuelto por la función de aceptación en realidad se refiere a la conexión creada esta vez, y una conexión incluye dos partes de información, una es la IP de origen y el puerto de origen, y la otra es la IP del receptor y el puerto del receptor. Por lo tanto, aceptar puede generar varios sockets diferentes, y la IP del receptor y el puerto del receptor contenidos en estos sockets permanecen sin cambios. Solo cambian la IP de origen y el puerto de origen. En este caso, todos estos puertos receptores de socket pueden ser
, y la capa de socket aún puede distinguir con precisión la relación de propiedad entre los paquetes IP y los sockets según el par fuente/sumidero, completando así el protocolo TCP/IP. ¡Operación encapsulación! Al mismo tiempo, las reglas del firewall para procesar paquetes IP también son claras y claras, y no surgen situaciones complicadas como se imaginaba anteriormente.