Para o presente trabalho deve ser criado um chat criptográfico multithread.
Protocolo:
a) Conexão e Identificação 1 - Cliente conecta com servidor e recebe a chave pública. 2 - Cliente gera a chave secreta, criptografa com a pública, e envia para o servidor. 3 - Cliente envia o nome criptografado. 4 - Servidor decriptografa e gera mensagem de "(Usuário X) conectado". 5 - Servidor envia a mensagem para todos os clientes, criptografando para cada um.
b) Envio de mensagem 1 - Cliente envia mensagem criptografada para o servidor. 2 - Servidor decriptografa a mensagem e anexa a origem: "(Usuário X): mensagem". 5 - Servidor envia a mensagem para todos os clientes, criptografando para cada um.
c) Recepção assíncrona no cliente 1 - Cliente recebe mensagem criptografada do servidor. 2 - Cliente decriptografa a mensagem com sua chave secreta.
Em seguida deve ser definido um modelo de stress test, permitindo as seguintes variações:
Número de Threads no pool do servidor (10, 100, 500)
Número de conexões (10, 100, 500)
Número de pacotes por conexão (10, 100, 1K)
Tamanho do pacote (100 bytes, 1K, 10K)
Feitos os testes, tabule os resultados e indique o tempo médio de resposta.
Faça o código completo em linguagem Python.
Perguntas primordiais: -- Até onde o aumento de Threads melhorou a performance? -- Que fatores impactaram o processamento concorrente ou paralelo? -- Que fatores impactaram o processamento distribuído?