Explicar la programación de la red cocos2d-x

Permítanme hablar primero sobre algunos conceptos conceptuales de HTTP y Socket:

El socket generalmente se llama "socket" y se usa para describir la dirección IP y el puerto.

Los tipos de conectores se dividen en:

1> Zócalos de transmisión: proporcionan servicios de transmisión de datos confiables y orientados a la conexión, transmisión repetida y sin errores de datos y recibidos en orden, según el protocolo TCP.

2> Conector tipo datagrama: proporciona un servicio sin conexión, los datos se envían de forma independiente, no se proporciona garantía libre de errores y la secuencia de conexión debe estar desordenada, según el protocolo UDP.

Socket es la encapsulación y aplicación del protocolo TCP / IP. No es un protocolo en sí mismo, sino una interfaz de llamada (API). También se puede decir que el protocolo TPC / IP es un protocolo de capa de transporte, que principalmente resuelve cómo se transmiten los datos en la red.

El protocolo HTTP también se denomina protocolo de transferencia de hipertexto.

HTTP es un protocolo de capa de aplicación de conexión sin conexión y sin estado, que se compone de solicitud-respuesta. Es un modelo C / S estándar y principalmente resuelve cómo empaquetar datos.

La conexión HTTP utiliza el método "solicitud-respuesta". No solo es necesario establecer la conexión cuando se realiza la solicitud, sino que también el cliente puede enviar una solicitud al servidor antes de que el servidor pueda responder a los datos.

Conexión HTTP y conexión Socket

Conexión de socket: el servidor puede transmitir datos directamente al cliente hasta que las dos partes se desconecten.

Conexión HTTP: el servidor debe esperar a que el cliente envíe una solicitud antes de devolver los datos al cliente. El cliente envía una solicitud de conexión al servidor a intervalos regulares. No solo puede permanecer en línea, sino que también "pregunta" si el servidor tiene nuevos datos. Envíe los datos al cliente si están disponibles.

Después de hablar de tantas cosas conceptuales, veamos el uso específico de estos dos métodos.

Primero veamos el uso del protocolo HTTP:

Los dos métodos de comunicación HTTP más utilizados son get y post. Echemos un vistazo a las similitudes y diferencias entre estos dos métodos.

1> obtener es obtener (consultar) datos del servidor, y publicar es transmitir (modificar) datos al servidor;

2> La cantidad de datos transmitidos por get es pequeña y no puede superar los 2KB, y la cantidad de datos transmitidos por correo postal es grande, lo que generalmente se considera ilimitado;

3> La seguridad de get es muy baja, por lo general no puede escapar de potentes herramientas de captura de paquetes como Wireshark, pero la eficiencia de ejecución es mejor, la seguridad de la publicación es relativamente buena;

Sugerencia: use el método get al realizar consultas de datos y use el método post al agregar, modificar o eliminar datos

La demostración es la siguiente:

Definimos dos métodos en una clase, uno es solicitud y el otro es respuesta:

Mira la realización del método:

Aquí utilizo dos valores de etiqueta para distinguir si usar get o post. Podemos ver las similitudes y diferencias entre estos dos métodos:

1> El método get conecta los datos directamente a la parte posterior de la URL y el método de publicación separa la URL de los datos

2> Ambos métodos devolverán la llamada a un método después de solicitar el servidor, y el servidor devolverá una cadena JSON independientemente de si la solicitud es exitosa

Veamos este método de devolución de llamada:

A través de la cadena JSON devuelta por el servidor, podemos determinar si la solicitud es exitosa. En general, HTTP es un proceso de solicitud y respuesta.

Programación TCP y UDP en Socket

Diagrama de flujo de la conexión TCP:

1> Crea un enchufe (enchufe)

Toma SOCKET (int af, int tipo, int protocolo)

af: Especifique la familia de direcciones, el protocolo (TCP, IP) solo puede ser AF_INET.

type: especifique el tipo de socket (streaming o datagrama).

protocolo: El protocolo con una familia de direcciones específica, si es 0, el sistema seleccionará automáticamente un protocolo adecuado.

Si la llamada al socket tiene éxito, devolverá un nuevo socket SOCKET, si falla, devolverá un error.

2> Vincular el socket a un puerto con una dirección local (vincular)

int bind (SOCKET s, const struct sockaddr FAR * name, int namelen)

s: el zócalo que se va a enlazar

name: especifica la información de la dirección local del socket, que es una variable de puntero a sockaddr.

namelen: especifique la longitud de la estructura de la dirección.

3> Configure el socket en modo monitor para recibir solicitudes de clientes (escuchar)

1

int listen (SOCKET s, int backlog)

s: El enchufe a monitorear.

backlog: la longitud máxima de la cola en espera de conexión.

4> Esperando la solicitud del cliente, cuando haya una solicitud, acepte la solicitud de conexión y devuelva un nuevo conector correspondiente a esta conexión (aceptar)

SOCKET aceptar (SOCKET s, struct sockaddr FAR * addr, int FAR * addrlen)

s: el socket que se ha supervisado.

addr: puntero a un búfer, utilizado para recibir la dirección de la entidad conectada (la dirección IP y la información del puerto del cliente conectado).

addrlen: puntero a un número entero, incluida la longitud de la información de la dirección.

5> Utilice el socket recién generado para comunicarse con el cliente (enviar / recibir)

función de envío:

int enviar (SOCKET s, const char FAR * buf, int len, int flags)

s: enchufe establecido.

buf: apunta a un búfer que contiene los datos a transferir.

len: la longitud de los datos.

banderas: 0

función recv:

int recv (SOCKET s, char FAR * buf, int len, int flags)

s: el socket donde se establece la conexión y está listo para recibir datos

buf: guarda los datos recibidos

len: longitud del búfer

banderas: afectan el comportamiento de las llamadas a funciones

6> Continuar esperando otra solicitud de cliente

7> cerrar el enchufe

Supongo que te gusta

Origin blog.csdn.net/qq_21743659/article/details/108616221
Recomendado
Clasificación