Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Python - Programação de rede

Página anteriorPróxima página
Python fornece dois níveis de acesso a serviços de rede. Em um nível inferior, você pode acessar o suporte de soquete básico no sistema operacional subjacente, que permite implementar clientes e servidores para protocolos orientados a conexão e sem conexão.

Python também tem bibliotecas que fornecem acesso de nível superior a protocolos de rede de nível de aplicativo específicos, como FTP, HTTP e assim por diante.

Este capítulo fornece a você uma compreensão do conceito mais famoso em Rede - Programação de Soquete.

O que são Sockets?


Os soquetes são os terminais de um canal de comunicação bidirecional. Os sockets podem se comunicar dentro de um processo, entre processos na mesma máquina ou entre processos em continentes diferentes.

Os soquetes podem ser implementados em vários tipos de canais diferentes:soquetes de domínio Unix, TCP, UDP e assim por diante. O soquete biblioteca fornece classes específicas para lidar com os transportes comuns, bem como uma interface genérica para lidar com o resto.

Sockets têm seu próprio vocabulário -
Sr.No. Termo e descrição
1
Domínio

A família de protocolos usada como mecanismo de transporte. Esses valores são constantes como AF_INET, PF_INET, PF_UNIX, PF_X25 e assim por diante.
2
tipo

O tipo de comunicação entre os dois pontos de extremidade, normalmente SOCK_STREAM para protocolos orientados à conexão e SOCK_DGRAM para protocolos sem conexão.
3
protocolo

Normalmente zero, isso pode ser usado para identificar uma variante de um protocolo dentro de um domínio e tipo.
4
nome do host

O identificador de uma interface de rede -

  • Uma string, que pode ser um nome de host, um endereço com quatro pontos ou um endereço IPV6 em notação de dois pontos (e possivelmente ponto)

  • Uma string "", que especifica um endereço INADDR_BROADCAST.

  • Uma string de comprimento zero, que especifica INADDR_ANY, ou

  • Um número inteiro, interpretado como um endereço binário na ordem de bytes do host.
5
porta

Cada servidor escuta os clientes chamando em uma ou mais portas. Uma porta pode ser um número de porta Fixnum, uma string contendo um número de porta ou o nome de um serviço.

O soquete Módulo


Para criar um soquete, você deve usar o socket.socket () função disponível em socket módulo, que tem a sintaxe geral -
 s =socket.socket (socket_family, socket_type, protocol =0) 

Aqui está a descrição dos parâmetros -

  • socket_family - Este é AF_UNIX ou AF_INET, conforme explicado anteriormente.

  • socket_type - Este é SOCK_STREAM ou SOCK_DGRAM.

  • protocolo - Isso geralmente é deixado de fora, com o padrão de 0.

Depois de ter socket objeto, então você pode usar as funções necessárias para criar seu programa cliente ou servidor. A seguir está a lista de funções necessárias -

Métodos de soquete de servidor

Sr.No. Método e descrição
1
s.bind ()

Este método liga o endereço (nome do host, par de número da porta) ao soquete.
2
s.listen ()

Este método configura e inicia o listener TCP.
3
s.accept ()

Isso aceita passivamente a conexão do cliente TCP, aguardando até que a conexão chegue (bloqueio).

Métodos de soquete de cliente

Sr.No. Método e descrição
1
s.connect ()

Este método inicia ativamente a conexão do servidor TCP.

Métodos gerais de soquete

Sr.No. Método e descrição
1
s.recv ()

Este método recebe mensagem TCP
2
s.send ()

Este método transmite mensagem TCP
3
s.recvfrom ()

Este método recebe mensagem UDP
4
s.sendto ()

Este método transmite mensagem UDP
5
s.close ()

Este método fecha o soquete
6
socket.gethostname ()

Retorna o nome do host.

Um servidor simples


Para escrever servidores de Internet, usamos o soquete função disponível no módulo de soquete para criar um objeto de soquete. Um objeto de soquete é então usado para chamar outras funções para configurar um servidor de soquete.

Agora chame bind (hostname, port) função para especificar uma porta para o seu serviço no host fornecido.

Em seguida, ligue para aceitar método do objeto retornado. Este método espera até que um cliente se conecte à porta que você especificou e, em seguida, retorna uma conexão objeto que representa a conexão com esse cliente.
 #! / usr / bin / python # Este é server.py fileimport socket # Import socket modules =socket.socket () # Criar um socket objecthost =socket.gethostname () # Obter máquina local nameport =12345 # Reserve uma porta para o seu service.s.bind ((host, port)) # Ligue-se ao ports.listen (5) # Agora aguarde a conexão do cliente.while True:c, addr =s.accept () # Estabeleça conexão com o cliente. print 'Obteve conexão de', addr c.send ('Obrigado por conectar') c.close () # Feche a conexão 

Um cliente simples


Vamos escrever um programa cliente muito simples que abre uma conexão para uma determinada porta 12345 e um determinado host. É muito simples criar um cliente de socket usando o socket do Python função do módulo.

O socket.connect (hosname, porta) abre uma conexão TCP para hostname no porto . Depois de ter um soquete aberto, você pode ler a partir dele como qualquer objeto IO. Quando terminar, lembre-se de fechá-lo, como você fecharia um arquivo.

O código a seguir é um cliente muito simples que se conecta a um determinado host e porta, lê todos os dados disponíveis do soquete e sai -
 #! / usr / bin / python # Este é client.py fileimport socket # Import socket modules =socket.socket () # Criar um socket objecthost =socket.gethostname () # Obter máquina local nameport =12345 # Reserve uma porta para seu service.s.connect ((host, port)) print s.recv (1024) s.close () # Feche o soquete quando terminar 

Agora execute este server.py em segundo plano e, em seguida, execute client.py acima para ver o resultado.
 # O seguinte iniciaria um servidor em segundo plano. $ python server.py &# Assim que o servidor for iniciado, execute o cliente da seguinte maneira:$ python client.py 

Isso produziria o seguinte resultado -
 Conexão obtida de ('127.0.0.1', 48437) Obrigado por se conectar 

Módulos Python da Internet


Uma lista de alguns módulos importantes na rede Python / programação da Internet.
Protocolo Função comum Número da porta Módulo Python
HTTP Páginas da web 80 httplib, urllib, xmlrpclib
NNTP Notícias da Usenet 119 nntplib
FTP Transferências de arquivos 20 ftplib, urllib
SMTP Enviando e-mail 25 smtplib
POP3 Buscando e-mail 110 poplib
IMAP4 Buscando e-mail 143 imaplib
Telnet Linhas de comando 23 telnetlib
Gopher Transferências de documentos 70 gopherlib, urllib

Verifique todas as bibliotecas mencionadas acima para trabalhar com os protocolos FTP, SMTP, POP e IMAP.

Outras leituras


Este foi um início rápido com a Programação de Soquete. É um assunto vasto. Recomenda-se acessar o seguinte link para obter mais detalhes -

  • Programação de soquetes Unix.

  • Biblioteca e módulos de soquetes Python.

python

  1. Erros Python e exceções integradas
  2. Python - Configuração do ambiente
  3. Iteradores Python
  4. Arquivo ZIP Python com Exemplo
  5. Use o sublinhado no REPL
  6. Python Renomear arquivo e diretório usando os.rename ()