LEIA A DESCRIÇÃO
Código que me baseei para fazer a struct:
CLIENTE https://github.com/70838697/winSocketSample/blob/master/TCPEchoClient/TCPEchoClient.cpp
SERVIDOR
https://github.com/70838697/winSocketSample/blob/master/TCPSingleThreadedEchoServer/TCPSingleThreadedEchoServer.cpp
Struct utilizada para o projeto: https://github.com/kelvingamedev/struct-para-rede-tcp
Este vídeo aborda o uso de uma solução - um arquivo header que contém uma struct - para conectar partidas em jogos desenvolvidos em C/ C++. A biblioteca em questão é bem básica, mas cumpre seu trabalho de conectar as partidas dos jogadores.
Exemplo de jogo que utilizou a biblioteca: https://kelvingamedev.itch.io/coldww2
2. • Primeiro, baixe o código em que me baseei
para criar a struct Rede
• Lembrando que são dois códigos-fonte: um
faz o papel de cliente e o outro, de servidor
• LINKS: CLIENTE | SERVIDOR
3. • Teste esses códigos no seu computador e
procure compreende-los
• Com eles você pode fazer seu jogo funcionar
em rede
• Agora, vou ensinar a usar struct que criei
para modularizar o código do autor
6. Primeiro passo:
Utilize a função WinSockInit() no inicio da função
main() do seu jogo
Último passo:
Utilize a função EncerraWinSock() no final da
função main() e antes do “return 0;”
8. Segundo passo:
Utilize a função FlagsInit() para inicializar as flags
com um valor conhecido e padrão (false)
9. Terceiro Passo – Inicializando os
componentes da rede
Esta inicialização dependerá da opção selecionada pelo
jogador: ou cliente ou servidor...
10. Terceiro Passo – Inicialização do
servidor
A inicialização do servidor é feita com a função ServerInit que recebe
um parâmetro:
• A porta onde o servidor estará disponível (int)
• Ex: ServerInit(20131);
11. Terceiro Passo – Inicialização do
cliente
A inicialização do cliente é feita com a função ClienteInit que recebe
dois parâmetros:
• O IP do servidor
• A porta onde o servidor estará disponível (int)
• Ex: ClientInit(“127.0.0.1”,20131);
12. Quarto passo – Conexão entre
cliente e servidor
Assim como no passo 3, cliente e servidor precisam fazer
ações para que tudo ocorra corretamente.
Mas, agora as coisas são sequenciais. Primeiro, o servidor
abre um socket de conexão e depois o cliente conecta-se ao
socket.
13. Quarto passo – Servidor espera
a conexão do cliente
O servidor precisa ficar esperando uma conexão do cliente
Ele vai fazer absolutamente nada a não ser esperar pela
conexão (tenha isso em mente)
Isso pode ser feito com a função AceitaConexaoClient() que
retorna true quando o cliente se conectar ao socket
14. Quarto passo– Cliente conecta-se
ao servidor
Se o servidor está esperando a conexão do cliente, então
o cliente pode se conectar ao socket do servidor
Utilize a função ConectaServer() para isso. Ele vai retornar
true, caso a conexão ocorra.
15. Quinto Passo – Envie os Pacotes
- Cliente e servidor estão conectados. Portanto,você pode
enviar dados do jogo. Para isso...
– Verifique o valor da variável clienteOuServidor que vai
ser igual ou a “servidor” ou a “cliente” depedendo da função Init
utilizada
16. Quinto Passo – Envie os Pacotes
– Se o elemento da rede for servidor, então utilize a
função EnviaParaOClient() que recebe uma mensagem (pacote)
como parâmetro
- Caso contrário, use EnviaParaOServer passando uma
mensagem como parâmetro
17. Sexto passo – Receba os pacotes
– Utilize as funções RecebeDoCliente ou RecebeDoServer
para receber os pacotes. Quando retornar true, um novo pacote
foi recebido
- Para verificar o conteúdo do pacote utilize:
[nome_da_variavel].pacote
Ex: minhaRede.pacote
18. Sexto passo – Receba os pacotes
– Assim como o servidor não faz nada a não ser esperar
Pela conexão do cliente, o recebimento dos pacotes é
prioridade total para o servidor e para o cliente
- Eles só vão executar outras ações do jogo quando a
função de receber pacotes retornar true (pacote chegou) ou
false (erro de conexão entre os sockets)
19. Por enquanto é só isso.
Até a próxima versão do tutorial o/