Introdução à programação de soquetes em Python

Na programação de soquetes, a comunicação é estabelecida através de uma rede entre dois soquetes (nós). O servidor atua como a porta do ouvinte que escuta em um IP específico e o soquete do cliente chega ao soquete do servidor para comunicação. Para trabalhar na programação de soquetes, teremos que importar a biblioteca de soquetes que o python fornece.

Servidor de soquete Python

Um soquete é um terminal para enviar ou receber dados, portanto, precisamos de um servidor e um programa de soquete do cliente para esse fim. Para o nosso programa de exemplo, hospedaremos servidor e cliente na mesma máquina. Podemos até enviar e receber através de um código de servidor. Deve-se notar que podemos ter apenas um programa servidor, enquanto que podemos ter vários programas clientes.

Protocolo de controle de transmissão (TCP) é o protocolo padrão escolhido. O TCP é confiável, pois os pacotes descartados na rede são detectados e transmitidos pelo remetente. O TCP também fornece entrega de dados em ordem, ou seja, a ordem em que é enviada pelo remetente em uma ordem semelhante à qual é lida pelo aplicativo.

server.py

Dê uma olhada no programa abaixo: server.py

Linha 3: O soquete é uma biblioteca pré-instalada e um objeto será criado para isso. Este módulo de soquete é importado no programa python e será usado como uma função de soquete posteriormente no programa. Estamos criando um objeto aqui, que chamará a função socket.

Linha 4: socket.AF_INET corresponde ao IPV4 (se desejar usar o IPV6, pode ser usado o socket.AF_INET6. Isso se refere à família de soquetes. AF_INET especifica o protocolo que será usado para a comunicação. IPV4 e IPV6 são diferentes controles de transmissão formas ou protocolos de transmissão de dados pela rede.

IPV4 e IPV6 são apenas tipos diferentes de endereços IP. O socket.AF_INET corresponde ao TCP. O Transmission Control Protocol (TCP) funciona com o IP e define como o computador envia pacotes de dados entre si.

Em seguida, o que é necessário é o TCP. Para isso, precisaremos de um socket.SOCK_STREAM, que é o tipo de soquete. O TCP é um protocolo orientado a conexão, essencialmente envolve a execução de uma conexão de handshake de três vias com um servidor e um cliente. Em seguida, fornecemos um nome de host ao qual o cliente se conectará.

Linha 5: Para o nome do host, “localhost” ou “127.0.01” ou socket.gethostname (), qualquer um destes pode ser usado. Obtém o endereço IP do servidor.

Os itens acima são os dois parâmetros que definimos para o soquete.

Linha 6: Normalmente, temos muitas portas em nosso sistema, portanto, precisamos usar uma porta host não usada. Qualquer dígito de quatro dígitos pode ser usado, pois os dígitos mais baixos estão ocupados.

Linha 7: O método bind (), que liga o host e a porta a um soquete.

Todas essas etapas são necessárias para iniciar nosso servidor. Agora, precisamos fazer o cliente. Como mencionado anteriormente, podemos ter vários clientes.

Linha 8: Temos a opção de mencionar o número do cliente que pode interagir com o servidor. Isso é alcançado por s.listen (6). Inicia o ouvinte TCP. O numérico representa o número de clientes que podem interagir. Se, por exemplo, o cliente chegar, ele será descartado.

A linha 9: s.accept () aceita a solicitação do cliente e retorna dois objetos, um é o objeto socket-client e o outro é o endereço. O endereço IP será o endereço do cliente em que ele está presente.

Linha 10: É mais como uma notificação ao servidor sobre a conexão que foi estabelecida.

Por fim, imprimimos uma declaração que deve ser exibida quando os dois programas estiverem em execução no terminal. Depois que terminarmos o nosso programa de servidor, escreveremos o programa do cliente.

Cliente de soquete Python

Aqui discutimos sobre o cliente de soquete python:

client.py

Aqui está o nosso programa para o cliente: client.py

O programa cliente também possui um soquete semelhante, como vemos no caso do programa servidor. Normalmente, o programa cliente é executado no programa do servidor. Não está na mesma máquina que temos neste exemplo aqui. Com soquetes, o que pretendemos alcançar é a comunicação via programas Python em uma máquina em rede local ou mesmo remotamente.

Linha 8: Existe um método binding () no programa do servidor, aqui usará o método connect (). A tupla aqui terá host e porta no método Tomamos a mesma porta que usamos em nosso server.py

Precisamos executar server.py e client.py em diferentes terminais e é assim que veremos a conexão ocorrer.

Resultado:

A captura de tela é de dois terminais diferentes, um aberto no CMD e o outro aberto no PowerShell no Windows. A janela esquerda abre o programa server.py e o terminal à direita abre o programa client.py.

Vemos a saída impressa no terminal do lado do servidor.

Enviando String de um arquivo para outro arquivo

Vamos tentar enviar uma mensagem do lado do cliente para o lado do servidor. Escreveremos uma mensagem no programa client.py.

1. client.py

Aqui está o nosso programa para o cliente: client.py

Linha 9 e Linha 10: Definimos a mensagem em uma variável e enviamos a mensagem na forma de bytes e a convertemos ou codificamos no formato UTF-8. (UTF é um padrão Unicode, pois todo o conteúdo da mensagem é caractere e está dentro do gráfico Unicode). Devemos codificar e manter os dados o menor possível, caso contrário, a transmissão falhará em algum momento.

Linha 11: Fechamos a conexão.

No programa do servidor, faremos as seguintes alterações.

2. server.py

Aqui está o nosso programa para o servidor: server.py

Linha 11: Para construir a conexão, usamos o objeto cliente do soquete. Estamos mencionando o tamanho do buffer adicionando 1024 bytes (1 KB) ao método e mantemos a mensagem variável.

Linha 13: Então estamos imprimindo o método.

Resultado:

Abrimos os dois terminais novamente e vemos a seguinte saída.

Conclusão - Programação de soquete em Python

Os princípios básicos da programação de soquetes foram abordados aqui, mas é preciso observar que é um domínio enorme e há muito mais a ser abordado na programação de soquetes. Compreender bem o básico ajudaria a lidar com cenários complexos de cliente-servidor.

Artigos recomendados

Este é um guia para programação de soquetes em Python. Aqui discutimos o conceito de servidor de soquete python e cliente de soquete python com a implementação de código. Você também pode consultar os seguintes artigos para saber mais -

  1. Loops aninhados em Python
  2. Os 15 principais recursos do Python
  3. Os 7 principais IDE Python para Windows
  4. Métodos diferentes em conjuntos de Python