Explique a programação de rede cocos2d-x

Deixe-me primeiro falar sobre alguns entendimentos conceituais de HTTP e Socket:

O soquete é geralmente chamado de "soquete", usado para descrever o endereço IP e a porta.

Os tipos de soquete são divididos em:

1> Soquetes de streaming: fornecem serviços de transmissão de dados confiáveis ​​e orientados para conexão, sem erros de dados, transmissão repetida e recebidos em ordem, com base no protocolo TCP.

2> Soquete estilo datagrama: Fornece serviço sem conexão, os dados são enviados de forma independente, nenhuma garantia livre de erros é fornecida e a seqüência de conexão deve ser desordenada, com base no protocolo UDP.

Socket é o encapsulamento e a aplicação do protocolo TCP / IP. Não é um protocolo em si, mas uma interface de chamada (API). Também pode ser dito que o protocolo TPC / IP é um protocolo da camada de transporte, que resolve principalmente como os dados são transmitidos na rede.

O protocolo HTTP também é chamado de protocolo de transferência de hipertexto

O HTTP é um protocolo de camada de aplicativo de conexão sem estado e sem conexão, que é composto de solicitação-resposta. É um modelo C / S padrão e resolve principalmente como empacotar dados.

A conexão HTTP usa o método "solicitação-resposta". Não apenas a conexão precisa ser estabelecida quando a solicitação é feita, mas também o cliente pode enviar uma solicitação ao servidor antes que o servidor possa responder aos dados.

Conexão HTTP e conexão Socket

Conexão de soquete: O servidor pode transmitir dados diretamente ao cliente até que as duas partes se desconectem.

Conexão HTTP: o servidor precisa esperar que o cliente envie uma solicitação antes de enviar os dados de volta ao cliente. O cliente envia uma solicitação de conexão ao servidor em intervalos regulares. Ele não apenas pode permanecer on-line, mas também "pergunta" se o servidor possui novos dados. Envie os dados ao cliente se estiverem disponíveis.

Depois de falar sobre tantas coisas conceituais, vamos examinar o uso específico desses dois métodos.

Primeiro, vamos examinar o uso do protocolo HTTP:

Os dois métodos de comunicação HTTP comumente usados ​​são get e post. Vamos dar uma olhada nas semelhanças e diferenças entre esses dois métodos.

1> get é para obter (consultar) dados do servidor e post é para transmitir (modificar) dados para o servidor;

2> A quantidade de dados transmitidos por get é pequena e não pode ser maior que 2 KB, e a quantidade de dados transmitidos por correio é grande, o que geralmente é considerado ilimitado;

3> A segurança do get é muito baixa, geralmente não pode escapar de ferramentas poderosas de captura de pacotes como o Wireshark, mas a eficiência de execução é melhor; a segurança do post é relativamente boa;

Sugestão: use o método get ao fazer consulta de dados e use o método post ao adicionar, modificar ou excluir dados

A demonstração é a seguinte:

Definimos dois métodos em uma classe, um é a solicitação e o outro é a resposta:

Observe a realização do método:

Aqui, eu uso dois valores de tag para distinguir se devo usar get ou post. Podemos ver as semelhanças e diferenças entre esses dois métodos:

1> O método get conecta os dados diretamente ao verso do URL, e o método post separa o URL dos dados

2> Ambos os métodos chamarão de volta um método após solicitar o servidor, e o servidor retornará uma string JSON, independentemente de a solicitação ser bem-sucedida

Vejamos este método de retorno de chamada:

Por meio da string JSON retornada pelo servidor, podemos determinar se a solicitação foi bem-sucedida. Em geral, HTTP é um processo de solicitação e resposta.

Programação TCP e UDP em Socket

Fluxograma de conexão TCP:

1> Criar um soquete (soquete)

Soquete SOCKET (int af, int type, int protocol)

af: Especifique a família de endereços, o protocolo (TCP, IP) só pode ser AF_INET.

tipo: Especifique o tipo de socket (streaming ou datagrama).

protocolo: o protocolo com uma família de endereços específica, se for 0, o sistema selecionará automaticamente um protocolo adequado.

Se a chamada de soquete for bem-sucedida, ele retornará um novo soquete SOCKET, se falhar, retornará um erro.

2> Ligar o soquete a uma porta com um endereço local (ligar)

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

s: o soquete a ser vinculado.

nome: especifica as informações de endereço local do soquete, que é uma variável de ponteiro para sockaddr.

namelen: Especifique o comprimento da estrutura do endereço.

3> Defina o soquete para monitorar o modo para receber solicitações do cliente (ouvir)

1

ouvir int (SOCKET s, backlog interno)

s: O soquete a ser monitorado.

backlog: O comprimento máximo da fila de espera pela conexão.

4> Aguardando a solicitação do cliente, quando houver uma solicitação, aceite a solicitação de conexão e retorne um novo soquete correspondente a esta conexão (aceitar)

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

s: O soquete que foi monitorado.

addr: Ponteiro para um buffer, usado para receber o endereço da entidade conectada (o endereço IP e as informações da porta do cliente conectado).

addrlen: Ponteiro para um inteiro, incluindo o comprimento das informações de endereço.

5> Use o soquete recém-gerado para se comunicar com o cliente (enviar / receber)

função de envio:

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

s: socket estabelecido.

buf: aponta para um buffer que contém os dados a serem transferidos.

len: o comprimento dos dados.

sinalizadores: 0

função recv:

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

s: o soquete onde a conexão é estabelecida e pronto para receber dados

buf: salva os dados recebidos

len: comprimento do buffer

sinalizadores: afetam o comportamento das chamadas de função

6> Continue a esperar por outro pedido do cliente

7> Feche o soquete

Acho que você gosta

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