# -*- coding: utf-8 -*-
import socket

__author__ = 'Vinícius da Silveira Serafim <vinicius@serafim.eti.br>'

# ip e porta locais para aguardar conexões
listen_on = ("127.0.0.1", 9000)

# quantas conexões o sistema operacional vai manter aguardando até que o servidor as aceite
backlog = 5

# (1) Criar socket do servidor
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# (2) Associar um endereço e porta locais ao socket
server_socket.bind(listen_on)

# (3) Colocar o socket em escuta
server_socket.listen(backlog)

print "[i] Aguardando conexões em %s:%s" % listen_on

# (4) aceita uma nova conexão
new_client_socket, c_addr = server_socket.accept()

print "[+] nova conexão com %s:%s" % c_addr

# (5) recebe dados do cliente
data = new_client_socket.recv(128)

print "[<] '%s' (%s bytes)" % (data, len(data))

# (6) envia eco para o cliente
sent = new_client_socket.send(data)

print "[>] enviados %s bytes" % sent

# (7) encerra conexão
new_client_socket.close()
print "[X] conexão encerrada com %s:%s" % c_addr

# eof
