Meu primeiro servidor socket com python
Olá a todos!
Hoje, eu gostaria de compartilhar o estudo e experimentos práticos que estou realizando - no caso, os meus primeiros trabalhos utilizando socket e threading em python. Para quem não sabe, é possível criar e ajustar servidores usando a linguagem python. Para isso, utilizamos o método socket, no qual funciona como um ponto de comunicação responsável pela troca de dados entre dois programas pela rede, seja via internet ou programas na mesma máquina.
No caso onde eu comecei a praticar e dar os meus primeiros passos com servidores socket, primeiro eu fiz dois programas python, nomeados de server.py e client.py. Em ambos, tive que configurar a host e a porta. Do lado do servidor, configurei o modo de espera de chamada, a conexão quando o cliente está ativo e um laço para identificar quando o cliente desejar sair do servidor. Do lado do cliente, configurei a conexão com o servidor e o deslocamento de mensagens do cliente para o servidor

Foi a primeira vez que consegui fazer um servidor funcional, e foi demais! Mas logo percebi que o meu cliente estava sozinho no servidor, e decidi adicionar mais um cliente no mesmo servidor. Para isso, ajustei o servidor para utilizar o método threading!
O método threading é uma linha de execução que permite que o Python execute duas ou mais tarefas de forma simultânea dentro de um mesmo processo, como por exemplo aceitar novas pessoas no servidor enquanto conversa com quem já está conversando dentro do servidor
No meu caso, o ajuste foi feito apenas no servidor: empacotei a lógica das mensagens dos clientes dentro de uma função def, incluindo a condição de quando o usuário quer sair do server. Após isso, configurei o loop principal, onde nele o servidor passou a apenas aceitar as conexões e criou uma thread para cada uma
Depois disso tudo, enfim coloquei o código para rodar

E esse foi o resultado!
Por agora, irei focar em entender melhor a sintaxe de cada método usado dentro do socket e do threading ( como o bind, decode, encode, listen, recv, socket.socket e outros ) e, futuramente, pretendo fazer novas práticas
Obrigado pela atenção!



