Rede de Python

Rede de Python
Python é uma linguagem de alto nível projetada especificamente para facilitar a vida dos desenvolvedores. Por outro lado, a programação de rede pode ser uma tarefa tediosa e complicada em outras linguagens de programação, mas é simples e fácil em uma linguagem de programação Python. Ele permite ao usuário escrever scripts que podem automatizar a configuração de rede complexa. Neste artigo, veremos como executar a programação de rede usando Python.

Como o python é usado em redes?

A linguagem de programação Python desempenha um papel vital na programação de rede. O Python possui uma biblioteca padrão integrada que fornece suporte completo para codificação e decodificação de dados, protocolos de rede e todos os outros conceitos de rede. Escrever os códigos de programação de rede no Python é muito mais fácil do que em C ++ ou Java. A linguagem de programação Python fornece dois níveis de acesso ao serviço de rede: acesso de baixo nível e alto nível. O acesso de baixo nível oferece o suporte básico do soquete do sistema operacional. Enquanto o acesso de alto nível permite os protocolos de implementação como o FTP. Http, etc.

Este artigo o ajudará com um entendimento básico do conceito mais famoso de networking em Python, que é a programação do soquete.

O que são soquetes?

Os soquetes fornecem um canal de comunicação bidirecional entre dois terminais. Processos em outras máquinas, processos na mesma máquina e soquete consegue se comunicar com todos. Eles podem ser implementados em diferentes canais, como UDP, TCP, soquetes de domínio UNIX, etc. A biblioteca de soquete em Python oferece diferentes classes para gerenciar a transferência de dados comum ou uma interface genérica para gerenciar o resto. Os soquetes usam vários tipos de protocolos para determinar a conexão de porta a porta entre servidores e clientes. Esses protocolos são usados ​​para FTP, SMTP, email, endereço IP, DNS, etc. O vocabulário dos soquetes é diferente. Dê uma olhada na seguinte ilustração:

Prazo Descrição
Domínio Conjunto de protocolos usados ​​como mecanismo de transporte.
Tipo Define o tipo de comunicação entre soquetes.
Protocolo Determina o tipo de protocolo dentro do tipo e domínio.
Porta Um ponto de escuta através do qual os servidores ouvem as chamadas do cliente. Consiste no nome de um serviço, uma string que contém o número da porta e um número da porta fixnum.
nome de anfitrião Identifica uma interface de rede e consiste nas seguintes coisas:

Uma string "" que identifica o endereço de transmissão.

Uma corda de comprimento zero.

Uma string que contém o nome do host, um endereço de duplo quadro ou um endereço IPv6.

Um número inteiro que define o endereço binário em ordem de byte host.

O que é programação de soquete?

A programação do soquete conecta dois nós em uma rede de comunicação. Um nó é o ouvinte que é comumente conhecido como servidor, e o outro alcança o servidor, que é conhecido como o cliente. Para programação de soquete em Python, o módulo de soquete precisa ser incluído.

Vamos explorar alguns exemplos para aprender a implementar a programação de rede em Python.

Exemplo 1:

Neste exemplo, aprenderemos a sintaxe do módulo de soquete e como importá -lo para um programa Python. Primeiro, importamos o módulo de soquete no programa Python usando a instrução "importar soquete". Então, podemos usar as funções dos módulos de soquete. Aqui está a sintaxe do módulo Socket ():

soquete de importação
SocketModule = soquete.soquete (soquete.Af_inet, soquete.Sock_stream)
Imprimir (SocketModule)

Agora vamos executar a declaração para ver o que ele retorna:

Aqui está a seguinte saída:

Exemplo 2:

Agora, vamos aprender a criar um servidor simples e um cliente simples e ver como eles se comunicam.

Aqui está a codificação do lado do servidor:

Primeiro, importe um soquete e depois crie um objeto de soquete:

importar soquete como s
SocketModule = soquete.soquete ()

Obtenha o nome da máquina ligando para a instrução gethostName ():

hostname = soquete.GethostName ()

Forneça o número da porta que deseja que o servidor faça uma conexão entre servidor e cliente:

Portnum = 12345

Agora, vincule o host à porta para iniciar uma conexão:

s.Bind ((HostName, Portnum))

O próximo passo é esperar a conexão do cliente:

SocketModule.Ouça (5)

Por fim, estabeleça uma conexão com o cliente:

enquanto é verdade:
a, adrs = s.aceitar()
Imprimir ('Conexão recebida de', ADRs)
a.Enviar (B'Hanks for Connecting ')
a.fechar()

A seguir, a codificação do lado do cliente:

Para iniciar uma conexão, o módulo de soquete precisa ser importado no lado do cliente, assim como foi importado no lado do servidor:

importar soquete como s
SocketModule = soquete.soquete ()

Siga o mesmo processo, obtenha o nome da máquina local e reserve a porta que foi reservada pelo servidor para estabelecer uma conexão:

hostname = soquete.GethostName ()
Portnum = 12345

Agora, conecte o host à porta e faça uma conexão entre eles:

SocketModule.Connect (('127.0.0.1 ', Portnum))
Imprimir (SocketModule.RECV (1024))
s.fechar()

Depois de terminar com a codificação do cliente e do servidor, inicie o servidor e o cliente em segundo plano para ver os resultados:

Após uma conexão bem -sucedida, você verá a seguinte saída:

Exemplo 3:

Vamos ver outro exemplo para ter um entendimento mais claro sobre como o servidor se conecta com o cliente, bem como como o servidor ouve o cliente.

Aqui está a codificação do lado do servidor:

Para a codificação do lado do servidor, siga o mesmo processo. Importe o soquete, crie um módulo de soquete, reserve o número da porta, vincule o host e a porta e ouça o cliente. Se você pode observar, a condição "se" é adicionada ao loop para verificar uma condição específica. Veja o seguinte código:

soquete de importação
Portnum = 60
Ipadrs = '127.0.0.1 '
buffers = 30
SocketModule = soquete.soquete (soquete.Af_inet, soquete.Sock_stream)
SocketModule.Bind ((iPadrs, Portnum))
SocketModule.Ouça (1)
Conn, adrs = SocketModule.aceitar()
Print ('O endereço da conexão é:', ADRS)
enquanto é verdade:
dados = conn.RECV (buffers)
se não dados:
quebrar
print ("Os dados recebidos são:", dados)
vigarista.enviar (dados)
vigarista.fechar()

A seguir, a codificação do lado do cliente:

O processo de fazer uma conexão no lado do cliente é novamente, o mesmo. Importe o soquete, crie um módulo de soquete, reserve o número da porta e conecte a porta ao host:

soquete de importação
Portnum = 5006
Ipadrs = '127.0.0.1 '
buffers = 1024
PrintMessage = "oi! Eu sou uma mensagem do cliente.”
SocketModule = soquete.soquete (soquete.Af_inet, soquete.Sock_stream)
SocketModule.Connect ((iPadrs, Portnum))
SocketModule.send (printMessage)
Dados = SocketModule.RECV (buffers)
SocketModule.fechar

Agora, observe que o cliente envia uma mensagem para o servidor - “Olá! Eu sou uma mensagem do cliente ”. Esta mensagem é recebida pelo servidor e é impressa.

Após a conexão bem -sucedida entre o servidor e o cliente, você poderá ver a seguinte saída:

Conclusão

Esta é uma visão geral básica da programação do soquete em Python e um início rápido com a implementação. No entanto, é um assunto vasto e contém muitos detalhes com codificação complexa. Depois de obter prática com esses programas simples, você poderá entrar na profundidade da programação do soquete.