PRO_gramer

quase deu certo

Nov 27th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.25 KB | None | 0 0
  1. import socket
  2. import threading
  3.  
  4. MAX_BYTES = 65535
  5.  
  6.  
  7. def client(port):
  8.     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  9.     print('\n-------------------\n   GEOGRAFIA    \n-------------------')
  10.     print('-------------------\nPAÍSES E CAPITAIS\n-------------------')
  11.     comando = input(
  12.         'ESCOLHA UMA OPÇÃO:\n1 - Consultar palavra\n2 - Incluir palavra\n3 - Editar significado da palavra\n0 - Sair\n')
  13.     while (comando != '0'):
  14.         if (comando == '1'):
  15.             data1 = comando.encode('utf8')
  16.             sock.sendto(data1, ('127.0.0.1', port))
  17.  
  18.             pais = input('Digite a palavra: ')
  19.             data2 = pais.encode('utf8')
  20.             sock.sendto(data2, ('127.0.0.1', port))
  21.  
  22.             data, address = sock.recvfrom(MAX_BYTES)
  23.             text = data.decode('utf8')
  24.             print(text)
  25.  
  26.         elif (comando == '2'):
  27.             data1 = comando.encode('utf8')
  28.             sock.sendto(data1, ('127.0.0.1', port))
  29.  
  30.             pais = input('Digite a palavra: ')
  31.             data2 = pais.encode('utf8')
  32.             sock.sendto(data2, ('127.0.0.1', port))
  33.             capital = input('Digite o significado: ')
  34.             data3 = capital.encode('utf8')
  35.             sock.sendto(data3, ('127.0.0.1', port))
  36.  
  37.             data, address = sock.recvfrom(MAX_BYTES)
  38.             text = data.decode('utf8')
  39.             print(text)
  40.         elif (comando == '3'):
  41.             data1 = comando.encode('utf8')
  42.             sock.sendto(data1, ('127.0.0.1', port))
  43.  
  44.             pais = input('Digite a palavra: ')
  45.             data2 = pais.encode('utf8')
  46.             sock.sendto(data2, ('127.0.0.1', port))
  47.  
  48.             data, address = sock.recvfrom(MAX_BYTES)
  49.             text = data.decode('utf8')
  50.             print(text, '\n')
  51.  
  52.             capital = input('Digite o novo significado: ')
  53.             data3 = capital.encode('utf8')
  54.             sock.sendto(data3, ('127.0.0.1', port))
  55.  
  56.             data, address = sock.recvfrom(MAX_BYTES)
  57.             text = data.decode('utf8')
  58.             print(text)
  59.         else:
  60.             print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\ndigite uma opção válida brother\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
  61.             # break
  62.  
  63.         comando = input(
  64.             '\nESCOLHA UMA OPÇÃO:\n1 - Consultar palavra\n2 - Incluir palavra\n3 - Editar o significado da palavra\n0 - Sair\n')
  65.  
  66.  
  67. def server(port):
  68.     dicionario_países = {
  69.         'Nicarágua': 'Manágua',
  70.         'Somalia': 'Mogadíscio',
  71.         'Mongolia': 'ULAANBAATAR',
  72.         'Austria': 'VIENA',
  73.         'Afeganistão': 'kabul',
  74.         'África do Sul': 'Pretória',
  75.         'Albânia': 'Tirana',
  76.         'Alemanha': 'Berlim',
  77.         'Andorra': 'Andorra-a-Velha',
  78.         'Angola': 'Luana',
  79.         'Árabia Saudita': 'Riade',
  80.         'Argélia': 'Argel',
  81.         'Argentina': 'Buenos Aires',
  82.         'Arménia': 'Erevã',
  83.         'Austrália': 'Camberra',
  84.         'Azerbaijão': 'Bacu',
  85.         'Bangladesh': 'Daca',
  86.         'Bahamas': 'Nassau',
  87.         'Barbados': 'Bridgtown',
  88.         'Berém': 'Manama',
  89.         'Bélgica': 'Bruxelas',
  90.         'Belize': 'Berlmopã',
  91.         'Benim': 'Porto Novo',
  92.         'Bielorrúsia': 'Minsque',
  93.         'Bolívia': 'Sucre',
  94.         'Botsuana': 'Gaborone',
  95.         'Brasil': 'Brasília',
  96.         'Brunei': 'Bandar Seri',
  97.         'Bulgária': 'Sófia',
  98.         'Burquina Faso': 'Uagadugu',
  99.         'Burúndi': 'Bujumbura',
  100.         'Butão': 'Timbu',
  101.         'Cabo Verde': 'Praia',
  102.         'Camarões': 'Iundé',
  103.         'Camboja': 'Pnom Pene',
  104.         'Canadá': 'Otava',
  105.         'Catar': 'Doa',
  106.         'Cazaquistão': 'Astana',
  107.         'Chade': 'Jamena',
  108.         'Chile': 'Santiago',
  109.         'China': 'Pequim',
  110.         'Chipre': 'Nicósia',
  111.         'Colômbia': 'Bogotá',
  112.         'Comores': 'Moroni',
  113.         'Coreia do Norte': 'Pionguinague',
  114.         'Coreia do Sul': 'Seul',
  115.         'Cosovo': 'Pristina',
  116.         'Costa do Marfim': 'Iamussucro',
  117.         'Costa Rica': 'São José',
  118.         'Croácia': 'Zagreb',
  119.         'Cuaite': 'Cidade do Cuaite',
  120.         'Cuba': 'Havana',
  121.         'Dinamarca': 'Copenhaguen',
  122.         'Egito': 'Cairo',
  123.         'Emirados Árabes Unidos': 'Abu Dabi',
  124.         'Equador': 'Quito',
  125.         'Eslováquia': 'Bratislava',
  126.         'Espanha': 'Madrid',
  127.         'Estados Unidos': 'Whashington DC',
  128.         'Estônia': 'Talim',
  129.         'Etiópia': 'Adis Abeba',
  130.         'Filipinas': 'Manila',
  131.         'Finlândia': 'Helsínquia',
  132.         'França': 'Paris',
  133.         'Gabão': 'Libreville',
  134.         'Gâmbia': 'Banjul',
  135.         'Gana': 'Acra',
  136.         'Geórgia': 'Tebílissi',
  137.         'Granada': 'São Jorge',
  138.         'Grécia': 'Atenas',
  139.         'Guatemala': 'Cidade da guatemala',
  140.         'Guiana': 'Georgetown',
  141.         'Haiti': 'Porto Princípe',
  142.         'Hungria': 'Budapeste',
  143.         'Índia': 'Nova Delí',
  144.         'Indonésia': 'Jacarta',
  145.         'Iraque': 'Bagdá',
  146.         'Irlanda': 'Dublim',
  147.         'Israel': 'Jerusalém',
  148.         'Itália': 'Roma',
  149.         'Jamaica': 'Kingston',
  150.         'Japão': 'Tóquio',
  151.         'Jordânia': 'Amã',
  152.         'Letônia': 'Riga',
  153.         'Líbano': 'Beirute',
  154.         'Libéria': 'Monróvia',
  155.         'Luxemburgo': 'Luxemburgo',
  156.         'Macedônia': 'Escópia',
  157.         'Madagascar': 'Antananarivo',
  158.         'Malásia': 'Cuala Lampur',
  159.         'Mali': 'Bamaco',
  160.         'Malta': 'Valeta',
  161.         'Marrocos': 'Rebate',
  162.         'México': 'Cidade do México',
  163.         'Moçambique': 'Maputo',
  164.         'Mônaco': 'Mônaco',
  165.         'Noruega': 'Oslo',
  166.         'Nova Zelândia': 'Wellington',
  167.         'Omã': 'Mascate',
  168.         'Peru': 'Lima',
  169.         'Portugal': 'Lisboa',
  170.  
  171.     }
  172.  
  173.     def consulta(pais):
  174.         if (dicionario_países.get(pais) == None):
  175.             return 'Não contem esse país em nosso banco de dados!'
  176.         else:
  177.             return '!!!!!!!!!!!!!!!!!!!\nA capital  de "{}": {!r}\n!!!!!!!!!!!!!!!!!!!'.format(pais, dicionario_países[pais])
  178.  
  179.     def inserir(pais, capital):
  180.         dicionario_países[pais] = capital
  181.         return '!!!!!!!!!!!!!!!!!!!\nO País"{}" e sua Capital "{}" foi adicionada ao banco de dados.\n!!!!!!!!!!!!!!!!!!!'.format(pais,capital)
  182.  
  183.     def editar(pais, capitalnew):
  184.         dicionario_países[pais] = capitalnew
  185.         return '!!!!!!!!!!!!!!!!!!!\nA capital de "{}" foi editada!!!\n!!!!!!!!!!!!!!!!!!!.'.format(pais)
  186.  
  187.     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  188.     sock.bind(('127.0.0.1', port))
  189.     print('Listening at {}'.format(sock.getsockname()))
  190.     while True:
  191.         data1, address = sock.recvfrom(MAX_BYTES)
  192.         comando = data1.decode('utf8')
  193.         data1, address = sock.recvfrom(MAX_BYTES)
  194.         thread = threading.Thread(target=responde_cliente,
  195.                                   args=[consulta, data1, editar, inserir, sock])
  196.         thread.start()
  197.  
  198.         responde_cliente(comando, consulta, editar, inserir, sock)
  199.  
  200.  
  201. def responde_cliente(comando, consulta, editar, inserir, socktread):
  202.     socktread = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  203.     if (comando == '1'):
  204.         data2, address = socktread.recvfrom(MAX_BYTES)
  205.         pais = data2.decode('utf8')
  206.  
  207.         text = consulta(pais)
  208.         data = text.encode('utf8')
  209.         socktread.sendto(data, address)
  210.         # print(text)
  211.     elif (comando == '2'):
  212.         data2, address = socktread.recvfrom(MAX_BYTES)
  213.         pais = data2.decode('utf8')
  214.  
  215.         data3, address = socktread.recvfrom(MAX_BYTES)
  216.         capital = data3.decode('utf8')
  217.         text = inserir(pais, capital)
  218.         data4 = text.encode('utf8')
  219.         socktread.sendto(data4, address)
  220.         # print(text)
  221.     elif (comando == '3'):
  222.         data2, address = socktread.recvfrom(MAX_BYTES)
  223.         pais = data2.decode('utf8')
  224.  
  225.         text = consulta(pais)
  226.         data = text.encode('utf8')
  227.         socktread.sendto(data, address)
  228.  
  229.         data3, address = socktread.recvfrom(MAX_BYTES)
  230.         capital = data3.decode('utf8')
  231.         text = editar(pais, capital)
  232.         data4 = text.encode('utf8')
  233.         socktread.sendto(data4, address)
  234.  
  235.  
  236. comando = input("Digite 'server' para servidor ou 'client' para cliente: ")
  237. if (comando == 'server'):
  238.     server(1060)
  239. elif (comando == 'client'):
  240.     client(1060)
  241. else:
  242.     print('ops!')
Advertisement
Add Comment
Please, Sign In to add comment