Sockets em Python
Publicado por Bruno Gola 25/10/2006
[ Hits: 25.107 ]
Este script funciona como cliente/servidor para exemplificar o uso de sockets em Python.
Espero que esteja fácil de entender :-)
#!/usr/bin/python # -*- coding: iso8859-1 -*- """ Este script serve para exemplificar o uso de sockets em python para o trafego de dados em rede. É bem simples, nele estão definidos o servidor e o clinete (que são habilitados de acordo com os argumentos durante a chamada na linha de comando. Exemplo: $ ./sockets.py -s 9099 # Isso em um terminal $ ./sockets.py -c localhost 9099 # Em outro terminal Simples assim. Lembrando que funciona em rede também, ou seja, você pode rodar o servidor em uma maquina e o client em outra. Para ter ajuda basta digitar ./sockets.py -h Bruno Gola < brunogola em gmail ponto com > """ """ Módulo necessário para utilização de sockets""" from socket import * """ Módulos para receber argumentos via linha de comando e sair do programa (exit) """ from sys import argv,exit def conecta(ip,porta): """ Esta função recebe um ip e uma porta e faz a conexão""" sock = socket(AF_INET,SOCK_STREAM) # Criação do socket sock.connect((ip,int(porta))) # Conexão com o servidor return sock def server(): """ Esta função abre um servidor que fica esperando por conexões de rede na porta definida. """ NUMERO_CONEXOES = 1 # Número de conexões que o server aceitara if len(argv) < 3: usage() exit(1) sock = socket(AF_INET,SOCK_STREAM) # Criação do socket do servidor sock.bind(("localhost",int(argv[2]))) # Faz o socket escutar no ip "localhost" e porta passado no argumento sock.listen(NUMERO_CONEXOES) # Escuta até NUMERO_CONEXOES conexões client = sock.accept() # Aceita e espera por conexões new_sock = client[0] # client[0] contém o socket para a conexão aberta, ip = client[1][0] # client[1] contém uma tupla com informações sobre o client no formato (ip,porta) print "Cliente conectado.\nInformações:\n\tIP: %s" % ip print "O Server está de pé, esperando por mensagens. CTRL+C para derrubar o server.\n" BY = 1024 try: msg = True while msg != None: msg = new_sock.recv(BY) # Recebe uma mensagem pelo socket aberto, recebe até BY bytes print "Mensagem recebida de %s -> %s" % (ip,msg) except KeyboardInterrupt: # Trata o CTRL+C print "Saindo..." exit(0) def client(): """ Função que representa o cliente, conecta no servidor e interage com o usuário """ if len(argv) < 4: usage() exit(1) sock = conecta(argv[2],argv[3]) # Conecta try: while True: msg = raw_input("Digite sua mensagem (para sair pressione ctrl+c): ") sock.send(msg) # Envia a mensagem except KeyboardInterrupt: # Trata o CTRL+C sock.send("{FONTE}") print "Saindo..." exit(0) def usage(): print "Uso: %s options [ip] [porta]\n\n\t-s abre o programa como servidor, especifique a porta\n\t-c abre o programa como client, especifique o ip e a porta" % argv[0] if __name__ == "__main__": args = ("-s","-c","-h") if len(argv) < 2 or argv[1] not in args or argv[1] == "-h": usage() exit(1) if argv[1] == args[0]: print "Executando o server.\n" server() elif argv[1] == args[1]: print "Executando o cliente.\n" client() exit(0)
Shell reverso completo - servidor
B.S.A.N.S. - Break Security - Automated Network Scanner [PARTE 1]
Shell reverso em Python - cliente e servidor
auth_ig.py: Script para autenticação do IG
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)