From 6cb914791f48aa3112e50e5904c9a9aee2c1af08 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Tue, 8 Nov 2016 10:25:03 -0200 Subject: [PATCH] removendo lixo --- Outros/Client.c | 81 ------ Outros/Client2.c | 81 ------ Outros/Client3.c | 81 ------ Outros/Comandos | 5 - Outros/Servidor.c | 71 ----- Outros/chat1/.gitignore | 2 - Outros/chat1/README.md | 87 ------- Outros/chat1/chat.py | 329 ------------------------ Outros/chat1/connection.py | 83 ------ Outros/chat1/message.py | 223 ---------------- Outros/chat1/timeout.py | 34 --- Outros/chatfeliz/README.txt | 17 -- Outros/chatfeliz/etc/protocolo.txt | 26 -- Outros/chatfeliz/src/Makefile | 8 - Outros/chatfeliz/src/chat.sh | 2 - Outros/chatfeliz/src/main.py | 64 ----- Outros/chatfeliz/src/networkManager.py | 272 -------------------- Outros/chatfeliz/src/networkManager.pyc | Bin 9018 -> 0 bytes Outros/chatfeliz/src/protocolo.py | 79 ------ Outros/chatfeliz/src/protocolo.pyc | Bin 3830 -> 0 bytes Outros/chatfeliz/src/socketManager.py | 12 - Outros/chatfeliz/src/socketManager.pyc | Bin 1031 -> 0 bytes Outros/listener.c | 95 ------- Outros/makefile | 3 - Outros/ring.c | 238 ----------------- Outros/talker.c | 67 ----- 26 files changed, 1960 deletions(-) delete mode 100644 Outros/Client.c delete mode 100644 Outros/Client2.c delete mode 100644 Outros/Client3.c delete mode 100644 Outros/Comandos delete mode 100644 Outros/Servidor.c delete mode 100644 Outros/chat1/.gitignore delete mode 100644 Outros/chat1/README.md delete mode 100755 Outros/chat1/chat.py delete mode 100644 Outros/chat1/connection.py delete mode 100644 Outros/chat1/message.py delete mode 100644 Outros/chat1/timeout.py delete mode 100644 Outros/chatfeliz/README.txt delete mode 100644 Outros/chatfeliz/etc/protocolo.txt delete mode 100644 Outros/chatfeliz/src/Makefile delete mode 100755 Outros/chatfeliz/src/chat.sh delete mode 100644 Outros/chatfeliz/src/main.py delete mode 100644 Outros/chatfeliz/src/networkManager.py delete mode 100644 Outros/chatfeliz/src/networkManager.pyc delete mode 100644 Outros/chatfeliz/src/protocolo.py delete mode 100644 Outros/chatfeliz/src/protocolo.pyc delete mode 100644 Outros/chatfeliz/src/socketManager.py delete mode 100644 Outros/chatfeliz/src/socketManager.pyc delete mode 100644 Outros/listener.c delete mode 100644 Outros/makefile delete mode 100644 Outros/ring.c delete mode 100644 Outros/talker.c diff --git a/Outros/Client.c b/Outros/Client.c deleted file mode 100644 index c08ebdc..0000000 --- a/Outros/Client.c +++ /dev/null @@ -1,81 +0,0 @@ -/* fpont 12/99 */ -/* pont.net */ -/* udpClient.c */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include <stdio.h> -#include <unistd.h> -#include <string.h> /* memset() */ -#include <sys/time.h> /* select() */ -#include <stdlib.h> -#define REMOTE_SERVER_PORT 1500 -#define MAX_MSG 100 - - -int main(int argc, char *argv[]) { - - int sd, rc, i; - struct sockaddr_in cliAddr, remoteServAddr; - struct hostent *h; - - /* check command line args */ - if(argc<3) { - printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]); - exit(1); - } - - /* get server IP address (no check if input is IP address or DNS name */ - h = gethostbyname(argv[1]); - if(h==NULL) { - printf("%s: unknown host '%s' \n", argv[0], argv[1]); - exit(1); - } - - printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name, - inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); - - remoteServAddr.sin_family = h->h_addrtype; - memcpy((char *) &remoteServAddr.sin_addr.s_addr, - h->h_addr_list[0], h->h_length); - remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT); - - /* socket creation */ - sd = socket(AF_INET,SOCK_DGRAM,0); - if(sd<0) { - printf("%s: cannot open socket \n",argv[0]); - exit(1); - } - - /* bind any port */ - cliAddr.sin_family = AF_INET; - cliAddr.sin_addr.s_addr = htonl(INADDR_ANY); - cliAddr.sin_port = htons(0); - - rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr)); - if(rc<0) { - printf("%s: cannot bind port\n", argv[0]); - exit(1); - } - - - /* send data */ - for(i=2;i<argc;i++) { - rc = sendto(sd, argv[i], strlen(argv[i])+1, 0, - (struct sockaddr *) &remoteServAddr, - sizeof(remoteServAddr)); - - if(rc<0) { - printf("%s: cannot send data %d \n",argv[0],i-1); - close(sd); - exit(1); - } - - } - - return 1; - -} diff --git a/Outros/Client2.c b/Outros/Client2.c deleted file mode 100644 index c08ebdc..0000000 --- a/Outros/Client2.c +++ /dev/null @@ -1,81 +0,0 @@ -/* fpont 12/99 */ -/* pont.net */ -/* udpClient.c */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include <stdio.h> -#include <unistd.h> -#include <string.h> /* memset() */ -#include <sys/time.h> /* select() */ -#include <stdlib.h> -#define REMOTE_SERVER_PORT 1500 -#define MAX_MSG 100 - - -int main(int argc, char *argv[]) { - - int sd, rc, i; - struct sockaddr_in cliAddr, remoteServAddr; - struct hostent *h; - - /* check command line args */ - if(argc<3) { - printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]); - exit(1); - } - - /* get server IP address (no check if input is IP address or DNS name */ - h = gethostbyname(argv[1]); - if(h==NULL) { - printf("%s: unknown host '%s' \n", argv[0], argv[1]); - exit(1); - } - - printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name, - inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); - - remoteServAddr.sin_family = h->h_addrtype; - memcpy((char *) &remoteServAddr.sin_addr.s_addr, - h->h_addr_list[0], h->h_length); - remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT); - - /* socket creation */ - sd = socket(AF_INET,SOCK_DGRAM,0); - if(sd<0) { - printf("%s: cannot open socket \n",argv[0]); - exit(1); - } - - /* bind any port */ - cliAddr.sin_family = AF_INET; - cliAddr.sin_addr.s_addr = htonl(INADDR_ANY); - cliAddr.sin_port = htons(0); - - rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr)); - if(rc<0) { - printf("%s: cannot bind port\n", argv[0]); - exit(1); - } - - - /* send data */ - for(i=2;i<argc;i++) { - rc = sendto(sd, argv[i], strlen(argv[i])+1, 0, - (struct sockaddr *) &remoteServAddr, - sizeof(remoteServAddr)); - - if(rc<0) { - printf("%s: cannot send data %d \n",argv[0],i-1); - close(sd); - exit(1); - } - - } - - return 1; - -} diff --git a/Outros/Client3.c b/Outros/Client3.c deleted file mode 100644 index c08ebdc..0000000 --- a/Outros/Client3.c +++ /dev/null @@ -1,81 +0,0 @@ -/* fpont 12/99 */ -/* pont.net */ -/* udpClient.c */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include <stdio.h> -#include <unistd.h> -#include <string.h> /* memset() */ -#include <sys/time.h> /* select() */ -#include <stdlib.h> -#define REMOTE_SERVER_PORT 1500 -#define MAX_MSG 100 - - -int main(int argc, char *argv[]) { - - int sd, rc, i; - struct sockaddr_in cliAddr, remoteServAddr; - struct hostent *h; - - /* check command line args */ - if(argc<3) { - printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]); - exit(1); - } - - /* get server IP address (no check if input is IP address or DNS name */ - h = gethostbyname(argv[1]); - if(h==NULL) { - printf("%s: unknown host '%s' \n", argv[0], argv[1]); - exit(1); - } - - printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name, - inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); - - remoteServAddr.sin_family = h->h_addrtype; - memcpy((char *) &remoteServAddr.sin_addr.s_addr, - h->h_addr_list[0], h->h_length); - remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT); - - /* socket creation */ - sd = socket(AF_INET,SOCK_DGRAM,0); - if(sd<0) { - printf("%s: cannot open socket \n",argv[0]); - exit(1); - } - - /* bind any port */ - cliAddr.sin_family = AF_INET; - cliAddr.sin_addr.s_addr = htonl(INADDR_ANY); - cliAddr.sin_port = htons(0); - - rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr)); - if(rc<0) { - printf("%s: cannot bind port\n", argv[0]); - exit(1); - } - - - /* send data */ - for(i=2;i<argc;i++) { - rc = sendto(sd, argv[i], strlen(argv[i])+1, 0, - (struct sockaddr *) &remoteServAddr, - sizeof(remoteServAddr)); - - if(rc<0) { - printf("%s: cannot send data %d \n",argv[0],i-1); - close(sd); - exit(1); - } - - } - - return 1; - -} diff --git a/Outros/Comandos b/Outros/Comandos deleted file mode 100644 index 484fb0e..0000000 --- a/Outros/Comandos +++ /dev/null @@ -1,5 +0,0 @@ -Abrir o Servidor -Abrir o Cliente <data> <mensagem> - Ex: 127.0.0.1 mensagem - -http://www.inf.pucrs.br/~cnunes/redes_si/Sockets.htm diff --git a/Outros/Servidor.c b/Outros/Servidor.c deleted file mode 100644 index d304b2a..0000000 --- a/Outros/Servidor.c +++ /dev/null @@ -1,71 +0,0 @@ -/* fpont 12/99 */ -/* pont.net */ -/* udpServer.c */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include <stdio.h> -#include <unistd.h> /* close() */ -#include <string.h> /* memset() */ -#include <stdlib.h> - -#define LOCAL_SERVER_PORT 1500 -#define MAX_MSG 100 - -int main(int argc, char *argv[]) { - - int sd, rc, n, cliLen; - struct sockaddr_in cliAddr, servAddr; - char msg[MAX_MSG]; - - /* socket creation */ - sd=socket(AF_INET, SOCK_DGRAM, 0); - if(sd<0) { - printf("%s: cannot open socket \n",argv[0]); - exit(1); - } - - /* bind local server port */ - servAddr.sin_family = AF_INET; - servAddr.sin_addr.s_addr = htonl(INADDR_ANY); - servAddr.sin_port = htons(LOCAL_SERVER_PORT); - rc = bind (sd, (struct sockaddr *) &servAddr,sizeof(servAddr)); - if(rc<0) { - printf("%s: cannot bind port number %d \n", - argv[0], LOCAL_SERVER_PORT); - exit(1); - } - - printf("%s: waiting for data on port UDP %u\n", - argv[0],LOCAL_SERVER_PORT); - - /* server infinite loop */ - while(1) { - - /* init buffer */ - memset(msg,0x0,MAX_MSG); - - - /* receive message */ - cliLen = sizeof(cliAddr); - n = recvfrom(sd, msg, MAX_MSG, 0, - (struct sockaddr *) &cliAddr, &cliLen); - - if(n<0) { - printf("%s: cannot receive data \n",argv[0]); - continue; - } - - /* print received message */ - printf("%s: from %s:UDP%u : %s \n", - argv[0],inet_ntoa(cliAddr.sin_addr), - ntohs(cliAddr.sin_port),msg); - - }/* end of server infinite loop */ - -return 0; - -} diff --git a/Outros/chat1/.gitignore b/Outros/chat1/.gitignore deleted file mode 100644 index 83658ec..0000000 --- a/Outros/chat1/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -*.log diff --git a/Outros/chat1/README.md b/Outros/chat1/README.md deleted file mode 100644 index 577f50a..0000000 --- a/Outros/chat1/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# TolkienRing -Chat de até quatro máquinas sobre uma rede Token Ring: Trabalho 2 de Redes 1 - -## Rodando -`chat -p [communicationPort] -s [serverPort] -c` - -* -p: porta de comunicação do anel -* -s: porta do servidor de configuração do anel -* -c: Inicia em modo servidor de configuração do anel - -## Funcionamento -O TolkienRing é um chat de até 4 máquinas sobre uma rede Token Ring. - -A primeira máquina (ou alguma delas, mas só uma) inicia executando em modo de -configuração de rede. Esta máquina é conhecida como servidora (de configuração) do anel. -Este modo funciona da seguinte maneira: - -1. Uma primeira máquina (A) manda um *handshake* (um tipo especial de mensagem) para -a servidora. - * A servidora responde com o IP e porta do nodo com quem ela se conecta - * A máquina (A) responde um OK e se conecta - * Como esta é a primeira máquina, ela se conecta com a servidora - * A servidora define que esta máquina (A) é o próximo nodo da rede - * A rede é: [servidora] -> [A] -> [servidora] -* Uma segunda máquina (B) manda o *handshake* - * A servidora responde com o IP e porta da última máquina que se conectou (A) - * A máquina (B) responde um OK e se conecta - * A servidora se conecta com a máquina (B) - * A rede é: [servidora] -> [B] -> [A] -> [servidora] -* Uma terceira e última máquina (C) manda o *handshake* - * A servidora responde com o IP e porta da última máquina que se conectou (B) - * A máquina (C) responde um OK e se conecta - * A servidora se conecta com a máquina (C) - * A rede é: [servidora] -> [C] -> [B] -> [A] -* A servidora então cria o bastão da rede e envia para a próxima máquina -* O bastão passa por todas as máquinas e retorna para a servidora -* Vendo que a rede está correta, a servidora envia a primeira mensagem em modo de -broadcast: o nome de todas as máquinas na rede -* As outras máquinas armazenam essa informação para que os usuários possam escolher -para quem querem enviar algo. -* A partir de então, a máquina servidora vira a última máquina da rede (D) e pode -enviar normalmente as mensagens - -O modo de configuração da rede pode ser fechado por um comando do usuário com -menos do que 4 máquinas na rede. Caso isso ocorra e uma máquina queira entrar no chat -ela deve enviar o *handhsake* para a porta de configuração (note que existe uma porta -para a configuração da rede e uma para a comunicação do anel) de qualquer máquina. -Ao fazer isso, a máquina entra em modo de configuração e passa o bastão (quando sob sua posse) -pelo anel indicando o modo de configuração. Esta máquina então segue os passos normais -do servidor de configuração. - -## Mensagem -A mensagem é definida assim - -|Indicador de início|Controle|Origem|Destino|Tamanho|Dados|Paridade|Resposta| -|-------------------|--------|------|-------|-------|-----|---|--------| -|1 Byte|1 Byte|6 Bytes|6 Bytes|1 Byte|<= 1004 Bytes|4 Bytes|1 Byte| - -**Controle** - -|Token|Monitor|Configuração|Handshake|Reservado| -|-----|-------|------------|---------|---------| -|1 bit|1 bit|1 bit|1bit|4 bits| - -## Especificação do trabalho -Implementar um chat entre 4 máquinas montadas como um anel com passagem de bastão temporizado. - -Anel deve ser criado logicamente entre 4 servidores do Dinf usando Socket Datagram. - -As 4 máquinas **devem** ter acesso de usuário. - -Usuário deve digitar primeiro um número (máquina a qual a mensagem é destinada) depois ':' e depois a mensagem. - -Exemplo: `1:teste`. Caso especial: `5:mensagem` -> mensagem para todo mundo. - -Protocolo: definido pelos membros do trabalho. -* Respostas de carona são obrigatórias -* Protocolo deve especifcar enquadramento (sequencialização/detecção de erros/mensagens) -* Timeout de mensagens que não voltam p/ origem não precisa ser implementado -* Implementar timeout de bastão - -Entregar: -* Relatório com o protocolo detalhado e as escolhas de implementação feitas pela equipe -* Nota: 1,0 -* Código: por e-mail depois da apresentação -* Em duplas -* Linguagem: qualquer uma diff --git a/Outros/chat1/chat.py b/Outros/chat1/chat.py deleted file mode 100755 index fbc19af..0000000 --- a/Outros/chat1/chat.py +++ /dev/null @@ -1,329 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -import socket -import select -import argparse -import sys -import curses -import string -from connection import Connection -import message -import time -import datetime -import logging -import ast -from timeout import Timer - -logging.basicConfig(filename='tolkien.log', level=logging.DEBUG) - -def parseArgs(): - parser = argparse.ArgumentParser(description="TolkienRing: Chat em anel de até 4 máquinas", prog="chat") - parser.add_argument("-p", "--port", type=int, help="Porta de comunicação", default=1337) - parser.add_argument("-s", "--serverPort", type=int, help="Porta do servidor do anel", default=5050) - parser.add_argument("-c", "--configurationServer", help="Inicia no modo de configuração", action="store_true") - return parser.parse_args() - -def printHeader(screen, hostname, ip, status): - screen.clear() - screen.addstr(0, 0, "Máquina: %s" % hostname) - screen.addstr(1, 0, "IP: %s" % ip) - screen.addstr(2, 0, "Status: %s" % status) - x = screen.getmaxyx()[1] - title = "### TolkienRing ###" - screen.addstr(3, (x - len(title))/2, title, curses.A_REVERSE) - -def printMessages(screen, messages): - y = screen.getmaxyx()[0] - 2 #-2 pelas bordas - i = 1 - for msg in messages[-y:]: - screen.addstr(i, 1, msg[0], msg[1]) - i+=1 - -def printMachines(screen, machines): - x = screen.getmaxyx()[1] - title = "HOSTS" - screen.addstr(1, (x - len(title))/2, title, curses.A_BOLD) - i = 2 - for host, index in machines.items(): - screen.addstr(i, 1, "%s - %s" % (index, getMachineName(host[0]))) - i+=1 - #screen.addstr(i, 1, "%s" % str(machines)) - -def getMachineName(host): - return socket.gethostbyaddr(host)[0].split('.')[0] - -def connectToMachine(textbox): - textbox.nodelay(False) - curses.echo() - textbox.addstr(0, 1, "Digite o nome da máquina:") - textbox.refresh() - n = textbox.getstr(1, 1) - textbox.clear() - textbox.box() - textbox.refresh() - textbox.addstr(0, 1, "Digite a porta (a porta padrão é 5050):") - textbox.refresh() - p = textbox.getstr(1, 1) - textbox.clear() - textbox.box() - textbox.refresh() - curses.noecho() - textbox.nodelay(True) - return (socket.gethostbyname(n), int(p, 10)) if n and p else False - - -def parseUserMessage(msg, messages, machines, host, connection, s, nextHost): - lose_token = False - - try: - delim_index = msg.index(':') - machine_index = ''.join(msg[0:delim_index]) - machine_index.strip(string.whitespace) - if machine_index != 0: - m = message.Message() - data = ''.join(msg[delim_index+1:]) - data.strip(string.whitespace) - m.setData(data) - m.setOrigin(machines[host]) - m.setDestiny(machine_index) - messages.append(("Você para %s: %s" % (machine_index, m.getData()), curses.A_NORMAL)) - connection.put_message(s, m.getMessage(), nextHost) - except Exception, e: - s = ''.join(msg) - s.strip(string.whitespace) - if s: - if s[0] == '/': - action = s[1:] - if action == "quit": - sys.exit(0) - elif action == "token": - lose_token = True - else: - messages.append(("ERRO: A mensagem deve ter o formato: <host>:<mensagem>\n%s"%e, curses.A_BOLD)) - logging.debug(e) - finally: - msg = [] - return (msg, lose_token) - -def main(stdscr, args): - stdscr.nodelay(True) - - connectionTimeout = Timer("conn", 5.0) - tokenTimeout = Timer("token", 15.0) - timeouts = {"conn":connectionTimeout, "token":tokenTimeout} - - machines = {} - messages = [] - msg = [] - hostname = socket.gethostname() - host = socket.gethostbyname(hostname) - has_msg_on_ring = False - has_token = False - lose_token = False - quantum = 0.25 - - lose_token = False - - if args.port == args.serverPort: - # TODO: mostrar uma mensagem de erro melhor - raise ValueError("O valor da porta de rede não pode ser igual ao do servidor de configuração") - sys.exit(2) - - port = args.port - serverPort = args.serverPort - nextHost = (host, port) - - connection = Connection() - s = connection.open_socket(host, port) - confserver = connection.open_socket(host, serverPort) - connection.input_sockets = [confserver,s] - connection.output_sockets = [confserver,s] - - machines[(host, port)] = '1' - printHeader(stdscr, hostname, host, "Desconectado") - yx = stdscr.getmaxyx() - - chatscreen = stdscr.subpad(yx[0]-7, yx[1]-20, 4, 0) - machinescreen = stdscr.subwin(yx[0]-7, 18, 4, yx[1]-19) - textbox = stdscr.subwin(3, yx[1]-1, yx[0]-3, 0) - - textbox.nodelay(True) - curses.curs_set(0) - - messages.append(("INFO: Você não está conectado", curses.A_BOLD)) - messages.append(("INFO: Aperte 'c' para se conectar a alguém", curses.A_BOLD)) - messages.append(("INFO: Aperte 'q' para sair", curses.A_BOLD)) - messages.append(("INFO: Durante o anel digite '/quit' para sair", curses.A_BOLD)) - messages.append(("INFO: Durante o anel digite '/token' para perder o bastão", curses.A_BOLD)) - messages.append(("INFO: Nome da máquina: %s" % hostname, curses.A_BOLD)) - messages.append(("INFO: Porta do servidor: %s" % serverPort, curses.A_BOLD)) - messages.append(("INFO: Porta da rede: %s" % port, curses.A_BOLD)) - - curses.cbreak() - - t0 = 0.0 - while True: - chatscreen.box() - textbox.box() - machinescreen.box() - printMessages(chatscreen, messages) - printMachines(machinescreen, machines) - - if len(machines) <= 1 or nextHost == (host, port): - key = stdscr.getch() - if key == ord('q'): - sys.exit(0) - elif key == ord('c'): - # Pega informações do host - nextHost = connectToMachine(textbox) - # Send handshake - if nextHost: - connection.send_handshake(confserver, nextHost, port) - messages.append(("INFO: Tentando conectar...", curses.A_BOLD)) - timeouts["conn"].start() - else: - nextHost = (host, port) - else: - key = textbox.getch() - if key != -1: - if (key == curses.KEY_BACKSPACE or key == 127) and msg: - msg.pop() - else: - try: - c = chr(key) - if c == '\n': - msg, lose_token = parseUserMessage(msg, messages, machines, (host, port), connection, s, nextHost) - elif c in string.printable and len(msg) <= message.maxSize: - msg.append(c) - except ValueError: - pass - textbox.addstr(1, 1, ''.join(msg[-(textbox.getmaxyx()[1]-2):])) - textbox.noutrefresh() - - if has_token: - if lose_token: - - lose_token = False - has_token = False - logging.debug("Perdi o token") - printHeader(stdscr, hostname, host, "Conectado: Sem Token") - - elif (time.time() - t0) >= quantum: - connection.send_token(s, nextHost) - has_token = False - timeouts["token"].start() - printHeader(stdscr, hostname, host, "Conectado: Sem Token") - logging.debug("Enviei o token") - - # Checa os timeouts - for name, t in timeouts.items(): - if t.hasTimedOut(): - if t is connectionTimeout: - messages.append(("INFO: Não foi possível se conectar. Tente novamente.", curses.A_BOLD)) - timeouts["conn"].reset() - elif t is tokenTimeout: - messages.append(("INFO: Token Timeout", curses.A_BOLD)) - connection.send_token(s, nextHost, True, machines[(host, port)]) - timeouts["token"].start() - - ready_to_read,ready_to_write,in_error = connection.poll() - - for sock in ready_to_read: - data, addr = sock.recvfrom(1024) - if data: - n = datetime.datetime.now() - m = message.Message() - m.setMessage(data) - if not m.isToken(): - logging.debug("Raw data: %s" % m.getReadableMessage()) - # messages.append(("Raw data: %s" % m.getReadableMessage(), curses.A_NORMAL)) - if sock is confserver: - if m.isHandshake() and not m.isConfiguration(): - if len(machines) < 4: - connection.ack_handshake(confserver, addr, nextHost) - nextHost = (addr[0], int(m.getData(), 10)) - machines[nextHost] = str(len(machines) + 1) - messages.append(("INFO: %s se conectou" % getMachineName(addr[0]), curses.A_BOLD)) - printHeader(stdscr, hostname, host, "Conectado") - # Se só tem 2 máquinas, é a primeira conexão - if len(machines) == 2: - connection.send_token(s, nextHost) - timeouts["token"].start() - conf = message.Message() - conf.setConfiguration() - conf.setOrigin(machines[(host, port)]) - conf.setDestiny("5") - conf.setData(str(machines)) - connection.put_message(confserver, conf.getMessage(), nextHost) - elif m.isHandshake() and m.isConfiguration(): - # Recebeu um ack_handshake - timeouts["conn"].reset() - otherHost = m.getData() - delim_index = otherHost.index(':') - nextHost = (otherHost[0:delim_index], int(otherHost[delim_index+1:], 10)) - messages.append(("INFO: Você se conectou a rede", curses.A_BOLD)) - printHeader(stdscr, hostname, host, "Conectado") - else: - m.setReceived(machines[(host, port)]) - now = datetime.datetime.now() - if m.isToken(): - timeouts["token"].reset() - has_token = True - t0 = time.time() - printHeader(stdscr, hostname, host, "Conectado: Com token") - if m.isMonitor() and m.getOrigin() != machines[(host, port)]: - connection.put_message(confserver, m.getMessage(), nextHost) - elif m.isConfiguration(): - if m.checkParity(): - machines = ast.literal_eval(m.getData()) - m.setRead(machines[(host, port)]) - logging.debug("Machines: %s" % str(machines)) - else: - if m.getDestiny() == machines[(host, port)] or m.getDestiny() == "5" and m.getOrigin() != machines[(host, port)]: - if m.checkParity(): - m.setRead(machines[(host, port)]) - hour = '{:%H:%M:%S}'.format(now) - messages.append(("%s-%s: %s" % (hour, m.getOrigin(), m.getData()), curses.A_NORMAL)) - if m.getOrigin() == machines[(host, port)]: - is_received = True - is_read = True - has_msg_on_ring = False - if m.getDestiny() == "5": - for h, index in machines.items(): - if index != machines[h]: - if not m.getReceived(index): - is_received = False - if not m.getRead(index): - is_read = False - else: - is_received = m.getReceived(m.getOrigin()) - is_read = m.getRead(m.getOrigin()) - # messages.append(("INFO: r:%r l:%r - %s" % (is_received, is_read, m.getData()), curses.A_BOLD)) - #if not is_read or not is_received: - #connection.put_message(s, m.getMessage(), nextHost) - if not m.isToken() and m.getOrigin() != machines[(host, port)]: - connection.put_message(s, m.getMessage(), nextHost) - - for sock in ready_to_write: - if sock is s: - if connection.has_message(sock): - m = message.Message() - m.setMessage(connection.messages[sock][0][0]) - if has_token or m.isToken(): - connection.send_message(sock) - has_msg_on_ring = True - - - else: - if connection.has_message(sock): - connection.send_message(sock) - - chatscreen.noutrefresh() - machinescreen.noutrefresh() - stdscr.noutrefresh() - curses.doupdate() - - -if __name__ == "__main__": - args = parseArgs() - curses.wrapper(main, args) diff --git a/Outros/chat1/connection.py b/Outros/chat1/connection.py deleted file mode 100644 index 1ef6b85..0000000 --- a/Outros/chat1/connection.py +++ /dev/null @@ -1,83 +0,0 @@ -import socket, select -import message -# Recommended for queues on python doc -from collections import deque -import logging - -logging.basicConfig(filename='tolkien.log', level=logging.DEBUG) - -class Connection(object): - - def __init__(self): - self._input_sockets = [] - self._output_sockets = [] - self._monitor_sockets = [] - self.messages = {} - - def open_socket(self, host, port): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - s.bind((host, port)) - s.setblocking(False) - return s - - def poll(self): - return select.select(self._input_sockets, self._output_sockets, self._monitor_sockets,0) - - def send_handshake(self, sock, addr, port=1337): - handshake = message.makeHandshake(port) - logging.debug("Criando handshake") - logging.debug(handshake.getMessage()) - self.messages[sock].append((handshake.getMessage(), addr)) - - def ack_handshake(self, sock, addr, host): - ack = message.makeAckHandshake(host) - logging.debug("Criando ack_handshake") - logging.debug(ack.getMessage()) - self.messages[sock].append((ack.getMessage(), addr)) - - def send_token(self, sock, addr, monitor = False, origin="0"): - token = message.makeMonitor() if monitor else message.makeToken() - if monitor: - token.setOrigin(origin) - self.messages[sock].append((token.getMessage(), addr)) - - def put_message(self, sock, msg, addr): - self.messages[sock].append((msg, addr)) - - def send_message(self, sock): - # * -> expands tuple as arguments - sock.sendto(*(self.messages[sock].popleft())) - - def has_message(self, sock): - return bool(self.messages[sock]) - - def add_output_socket(self, sock): - if sock not in self._output_sockets: - self._output_sockets.append(sock) - self.messages[sock] = deque() - - @property - def input_sockets(self): - return self._input_sockets - - @input_sockets.setter - def input_sockets(self, value): - self._input_sockets = value - - @property - def output_sockets(self): - return self._output_sockets - - @output_sockets.setter - def output_sockets(self, value): - self._output_sockets = value - for s in value: - self.messages[s] = deque() - - @property - def monitor_sockets(self): - return self._monitor_sockets - - @monitor_sockets.setter - def monitor_sockets(self, value): - self._monitor_sockets = value diff --git a/Outros/chat1/message.py b/Outros/chat1/message.py deleted file mode 100644 index 0497f89..0000000 --- a/Outros/chat1/message.py +++ /dev/null @@ -1,223 +0,0 @@ -# -*- coding:utf-8 -*- -from binascii import crc32 - -maxSize = 4095 - -# Converte um caracter em uma lista que representa o valor binário -def chrToBitList(c): - return list('{0:08b}'.format(ord(c))) - -def intToBitList(i): - return list('{0:08b}'.format(i)) - -def chrToBitString(c): - return '{0:08b}'.format(ord(c)) - -# Converte uma lista para um caracter -def bitListToChar(l): - return chr(int(''.join(l), 2)) - -def bitStringToChr(s): - return chr(int(s, 2)) - -def setBitOneFromChr(c, i): - l = chrToBitList(c) - l[i] = '1' - return bitListToChar(l) - -class Message(object): - def __init__(self): - # Controle: |TMCHRRRR| - # T = token, M = monitor, C = configuração, H = handshake, R = reservado - self.control = chr(0) - self.origin = '0' - self.destiny = '0' - # 3 bytes - self.size = '0' - self.data = '0' - # 4 bytes - self.parity = chr(0) - self.response = chr(0) - - def setControl(self, control): - self.control = bitStringToChr(control) - - def setToken(self): - self.control = setBitOneFromChr(self.control, 0) - - def setMonitor(self): - self.control = setBitOneFromChr(self.control, 1) - - def setConfiguration(self): - self.control = setBitOneFromChr(self.control, 2) - - def setHandshake(self): - self.control = setBitOneFromChr(self.control, 3) - - def setOrigin(self, origin): - self.origin = origin - - def setDestiny(self, destiny): - self.destiny = destiny - - def setSize(self, size): - if size <= maxSize: - self.size = '{0:03x}'.format(size) - else: - # Throw error - pass - - def setData(self, data): - if len(data) <= maxSize: - self.data = data - self.setSize(len(data)) - else: - # Throw error - pass - - def calcParity(self): - data = self.getMessageWithoutParity() - parity = crc32(data) & 0xffffffff - bitList = intToBitList(parity) - chrList = [bitListToChar(bitList[0:8]), bitListToChar(bitList[8:16]), bitListToChar(bitList[16:24]), bitListToChar(bitList[24:32])] - self.parity = ''.join(chrList) - - def setResponse(self, response): - self.response = chr(response) - - def setReceived(self, machine): - i = int(machine, 10) - 1 - # machine é o número da máquina no anel (0, 3) - # O bit mais a esquerda diz que a msg foi recebida - # O bit mais a direita diz que a msg foi aceita - # |Resposta| - # |AABBCCDD| - self.response = setBitOneFromChr(self.response, i * 2) - - def setRead(self, machine): - i = int(machine, 10) - 1 - self.response = setBitOneFromChr(self.response, i * 2 + 1) - - def getControl(self): - return self.control - - def isToken(self): - return chrToBitString(self.control)[0] == '1' - - def isMonitor(self): - return chrToBitString(self.control)[1] == '1' - - def isConfiguration(self): - return chrToBitString(self.control)[2] == '1' - - def isHandshake(self): - return chrToBitString(self.control)[3] == '1' - - def getOrigin(self): - return self.origin - - def getDestiny(self): - return self.destiny - - def getSize(self): - return int(self.size, 16) - - def getData(self): - return self.data - - def getParity(self): - return self.parity - - def checkParity(self): - data = self.getMessageWithoutParity() - parity = crc32(data) & 0xffffffff - bitList = intToBitList(parity) - chrList = [bitListToChar(bitList[0:8]), bitListToChar(bitList[8:16]), bitListToChar(bitList[16:24]), bitListToChar(bitList[24:32])] - return (''.join(chrList) == self.parity) - - def getResponse(self): - return self.response - - def getReceived(self, machine): - i = int(machine, 10) - 1 - return chrToBitString(self.response)[i*2] == "1" - - def getAllReceived(self, machine): - # machine é a máquina que enviou - i = int(machine, 10) - 1 - m = [0, 1, 2, 3] - del m[i] - response = chrToBitString(self.response) - for r in m: - if response[r*2] == "0": - return False - return True - - def getRead(self, machine): - i = int(machine, 10) - 1 - return chrToBitString(self.response)[i * 2 + 1] == "1" - - def getAllRead(self, machine): - # machine é a máquina que enviou - i = int(machine, 10) - 1 - m = [0, 1, 2, 3] - del m[i] - response = chrToBitString(self.response) - for r in m: - if response[r*2 + 1] == "0": - return False - return True - - def setMessage(self, message): - msgSize = len(message) - self.control = message[0] - self.origin = message[1] - self.destiny = message[2] - self.size = message[3:6] - self.data = message[6:-5] - self.parity = message[-5:-1] - self.response = message[-1] - - def getMessage(self): - self.calcParity() - m = [self.control, self.origin, self.destiny, self.size, self.data, self.parity, self.response] - return ''.join(m) - - def getMessageWithoutParity(self): - m = [self.control, self.origin, self.destiny, self.size, self.data] - return ''.join(m) - - def getReadableMessage(self): - m = ['{0:08b}'.format(ord(self.control)), self.origin, self.destiny, self.size, self.data, '{0:08b}'.format(ord(self.response))] - return '|'.join(m) - -def makeHandshake(port): - data = str(port) - m = Message() - m.setHandshake() - m.setData(data) - return m - -def makeAckHandshake(host): - data = "%s:%s" % (host[0], str(host[1])) - m = Message() - m.setConfiguration() - m.setHandshake() - m.setData(data) - return m - -def makeToken(): - m = Message() - m.setToken() - return m - -def makeMonitor(): - m = Message() - m.setToken() - m.setMonitor() - return m - -def makeMessage(message): - m = Message() - m.setData(message) - return m diff --git a/Outros/chat1/timeout.py b/Outros/chat1/timeout.py deleted file mode 100644 index 4c907d4..0000000 --- a/Outros/chat1/timeout.py +++ /dev/null @@ -1,34 +0,0 @@ -import time -class TimeoutError(Exception): - pass - -class Timer(object): - def __init__(self, name='', maxTime=0.0): - self.time = 0.0 - self.timeout = False - self.name = name - self.maxTime = maxTime - self.active = False - def time(self): - return self.time - def time(self, time): - self.time = time - def timeout(self): - return self.timeout - def name(self): - return self.name - def name(self, name): - self.name = name - def maxTime(self): - return self.maxTime - def maxTime(self, maxTime): - self.maxTime = maxTime - def start(self): - self.time = time.time() - self.active = True - def hasTimedOut(self): - self.timeout = (time.time() - self.time) >= self.maxTime - return self.timeout and self.active - def reset(self): - self.time = 0.0 - self.active = False diff --git a/Outros/chatfeliz/README.txt b/Outros/chatfeliz/README.txt deleted file mode 100644 index 7b7f1ef..0000000 --- a/Outros/chatfeliz/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -CHAT FELIZ ----------- - -* Execução: -Para executar o programa, basta invocar o script "chat.sh" na pasta "src" -Alternativamente, é possível invocar o Python diretamente no arquivo "main.py", ou chamar o makefile. - -* Dependências: -- Python 2.7 -- zlib - -* Uso: -Na inicialização, é necessário fornecer o ID do computador (1-4, que define as portas a serem utilizadas). Em seguida, é necessário informar o IP da máquina seguinte. -Após a conexão com sucesso no Anel, você tem as seguintes possibilidades: -- Enviar mensagem: "[maquina de destino]:[mensagem]" (sem aspas) + ENTER -- Jogar o bastão fora: "x" (sem aspas) + ENTER -- Sair do programa: "q" (sem aspas) + ENTER diff --git a/Outros/chatfeliz/etc/protocolo.txt b/Outros/chatfeliz/etc/protocolo.txt deleted file mode 100644 index 648cabe..0000000 --- a/Outros/chatfeliz/etc/protocolo.txt +++ /dev/null @@ -1,26 +0,0 @@ -Protocolo "JOKAKOMK (nome beta)" - -*Campos: -Delimitador Inicio - 8 bits ("01011010") -Controle de Acesso - 8 bits \ -Maq. Destino - 4 bits \ Calcula -Maq. Origem - 4 bits ) -Tamanho - 4 bytes / o CRC32 -Dados - n bytes / -CRC-32 - 32 bits -Status da mensagem - 8 bits - -* Controle de Acesso -+------------+--------------+----------------+ -| Token (1b) | Monitor (1b) | Reservado (6b) | -+------------+--------------+----------------+ - -[*] Token e Monitor estarão em '1' no momento da inicialização - -* Status da Mensagem - -CMx = Copy Maquina X - -+---------+---------+---------+---------+---------+---------+---------+--------+ -| CM1(1b) | CM2(1b) | CM3(1b) | CM4(1b) | CM1(1b) | CM2(1b) | CM3(1b) | CM4(1b)| -+---------+---------+---------+---------+---------+---------+---------+--------+ diff --git a/Outros/chatfeliz/src/Makefile b/Outros/chatfeliz/src/Makefile deleted file mode 100644 index f0c7973..0000000 --- a/Outros/chatfeliz/src/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -all: - @echo "Rodando chat.sh. Voce pode chama-lo ao inves de utilizar esse makefile." - @echo "Ele foi implementado para utilizarmos o clean durante o projeto." - @echo - @bash chat.sh - -clean: - rm -f *.pyc diff --git a/Outros/chatfeliz/src/chat.sh b/Outros/chatfeliz/src/chat.sh deleted file mode 100755 index 0ade6fa..0000000 --- a/Outros/chatfeliz/src/chat.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -python2 main.py diff --git a/Outros/chatfeliz/src/main.py b/Outros/chatfeliz/src/main.py deleted file mode 100644 index 022009a..0000000 --- a/Outros/chatfeliz/src/main.py +++ /dev/null @@ -1,64 +0,0 @@ -import networkManager as netMgr -import socketManager as sockMgr -import threading -import os - -class threadTermInput(threading.Thread): - def __init__(self, threadID, name, counter): - threading.Thread.__init__(self) - self.threadID = threadID - self.name = name - self.counter = counter - def run(self): - while True: - newmessage = raw_input() - if len(newmessage) > 0: - if newmessage[0] >= '1' and newmessage[0] <= '5' and newmessage[1] == ':': - netMgr.addToOutQueue(newmessage[2:], ord(newmessage[0])-ord('1')) - elif newmessage[0] == 'x': - netMgr.loseToken() - elif newmessage[0] == 'q': - os._exit(0) - else: - print "*** ERRO *** Comando nao reconhecido!" - -#class threadTermOutput(threading.Thread): -# def __init__(self, threadID, name, counter): -# threading.Thread.__init__(self) -# self.threadID = threadID -# self.name = name -# self.counter = counter -# def run(self): -# while True: -# if(netMgr.hasReceivedMessage()): -# print netMgr.getNextReceivedMessage() - -relPortas = [(1334, 1335), (1335, 1336), (1336, 1337), (1337, 1334)] - -pcId = raw_input("Bem-vindo ao batepapo UOL\nEscolha o seu ID (1-4): ") -while int(pcId) < 1 or int(pcId) > 4: - pcId = raw_input("Bem-vindo ao batepapo UOL\nEscolha o seu ID (1-4): ") -pcId = int(pcId) - 1 - -#sockets destino,origem -outsocket = sockMgr.openSocket() -insocket = sockMgr.openSocket() -#conexao endereco de origem para receber msgs -sockMgr.bindSocket(insocket, relPortas[pcId][0]) - -nmip = raw_input("Digite o IP da proxima maquina: ") -while nmip == "": - nmip = raw_input("Digite o IP da proxima maquina: ") -nmport = relPortas[pcId][1] -print("Conectando...") -sendToken = False -if pcId == 0: - sendToken = True -netMgr.startNetwork((insocket, outsocket), nmip, nmport, sendToken) #inicia rede entre sockets adjacentes -netMgr.setPcID(pcId) #PCID = pcId(0-3) -threadLeitura = threadTermInput(1, "Thread-Leitura", 1) -#threadOutput = threadTermOutput(1, "Thread-Output", 1) -threadLeitura.start() -#threadOutput.start() -while True: - netMgr.updateNetwork() diff --git a/Outros/chatfeliz/src/networkManager.py b/Outros/chatfeliz/src/networkManager.py deleted file mode 100644 index 335cf0c..0000000 --- a/Outros/chatfeliz/src/networkManager.py +++ /dev/null @@ -1,272 +0,0 @@ -import protocolo as prot -import socketManager as sockmgr -import time -import socket -import exceptions - -# nm = next machine -nip, nport, insocket, outsocket = None, None, None, None -outqueue, outqueuedest, inqueue = [], [], [] -hasToken, sentMessage, genToken = False, False, False -hasToKillToken = False -lastTokenTime, pcId = 0, 0 - -def addToOutQueue(message, dest): - global outqueue, outqueuedest - outqueue.append(message) - outqueuedest.append(dest) - -def addToInQueue(message): - global inqueue - inqueue.append(message) - -def hasReceivedMessage(): - #if len(outqueue) > 0: - # return True - #else: - # return False - global inqueue - return True if len(inqueue) > 0 else False - -def hasMessageToSend(): - global outqueue - return True if len(outqueue) > 0 else False - -def getNextMessageToSend(): - global outqueue - return outqueue.pop(0) - -def getNextReceivedMessage(): - global inqueue - return inqueue.pop(0) - -def didAllReceived(status, dest): - pstatus = ord(status) - if dest < 4: - pdest = 2**dest - if(pstatus == ((pdest << 4) | pdest)): - return True - else: - return False - else: - target = (0xFF ^ (1 << pcId) ^ (1 << (pcId+4))) - if(pstatus == target): - return True - else: - return False - -def updateNetwork(): - global hasToken, lastTokenTime, outqueue, inqueue, sentMessage - global isWaitingForMonitor, genToken, hasToKillToken - curTime = int(round(time.time() * 1000)) - if hasToken: - if sentMessage: - data = tryToGetMessage() - if data != False: - maqdest = (ord(data['maqconf']) >> 4) - maqorig = (ord(data['maqconf']) % 4) - if((ord(data['accessctrl']) & 0x40) == 0x40): - lastTokenTime = curTime - prot.loadDecodedPacket(data) - forwardPacket(prot.getPacket()) - print "* Possivel erro no envio da mensagem, tente novamente!" - hasToken = False - sentMessage = False - elif(ord(data['accessctrl']) == 0x00): - if ((maqdest != maqorig) and (not didAllReceived(data['status'], maqdest))): - print "*** ERRO *** Nem todos os peers receberam a mensagem corretamente!" - sentMessage = False - else: - print "Erro na rede! Bastao recebido enquanto ja tinha bastao" - else: - if hasToKillToken: - hasToken = False - hasToKillToken = False - print "Eliminei o Token" - elif curTime - lastTokenTime > 200: - #Fim do periodo com o Token - tokenPass() - elif hasMessageToSend(): - sendMessage() - #else: - # tokenPass() - else: - data = tryToGetMessage() - if data != False: - maqdest = (ord(data['maqconf']) >> 4) - maqorig = (ord(data['maqconf']) % 4) - if (data['accessctrl'] != None): - if ((ord(data['accessctrl']) & 0x80) == 0x80): - hasToken = True - genToken = False - lastTokenTime = curTime - elif((ord(data['accessctrl']) & 0x40) == 0x40): - if genToken: - if(maqorig == pcId): - print "* Token recriado com sucesso!" - lastTokenTime = curTime - genToken = False - hasToken = True - elif(maqorig < pcId): - lastTokenTime = curTime - genToken = False - prot.loadDecodedPacket(data) - forwardPacket(prot.getPacket()) - else: - lastTokenTime = curTime - prot.loadDecodedPacket(data) - forwardPacket(prot.getPacket()) - else: - if(maqorig != pcId): - if(maqdest == pcId or maqdest == 4): - print "Incoming from [" + str(maqorig+1) + "]: " + data['data'] - data['status'] = chr(ord(data['status']) | (1 << pcId) | (1 << (pcId+4))) - prot.loadDecodedPacket(data) - forwardPacket(prot.getPacket()) - if curTime - lastTokenTime > 2000: - #generate new token - generateNewToken() - lastTokenTime = curTime - genToken = True - -def loseToken(): - global hasToKillToken - hasToKillToken = True - -def generateNewToken(): - prot.resetMessage() - prot.setAccessCtrl(0,1) - prot.setMaqorig(pcId) - prot.setMaqdest(4) - sockmgr.sendPacket(outsocket, nip, nport, prot.getPacket()) - -def tokenPass(): - global hasToken, lastTokenTime - if hasToken: - hasToken = False - lastTokenTime = int(round(time.time() * 1000)) - prot.resetMessage() - prot.setAccessCtrl(1, 0) - prot.setMaqorig(pcId) - prot.setMaqdest((pcId+1) % 4) - packet = prot.getPacket() - sockmgr.sendPacket(outsocket, nip, nport, packet) - -def sendMessage(): - global outqueue, outqueuedest, sentMessage - if hasMessageToSend(): - dest = outqueuedest.pop(0) - prot.resetMessage() - prot.setAccessCtrl(0, 0) - prot.setMaqdest(dest) - prot.setMaqorig(pcId) - prot.setMensagem(getNextMessageToSend()) - packet = prot.getPacket() - sockmgr.sendPacket(outsocket, nip, nport, packet) - sentMessage = True - -def sendMessageToTarget(target): - global sendMessage - if hasMessageToSend(): - prot.resetMessage() - prot.setAccessCtrl(0, 0) - prot.setMaqdest(target) - prot.setMaqorig(pcId) - prot.setMensagem(getNextMessageToSend()) - packet = prot.getPacket() - sockmgr.sendPacket(outsocket, nip, nport, packet) - sentMessage = True - -def tryToGetMessage(): - try: - rawpacket = insocket.recv(8096) - packet = prot.decodePacket(rawpacket) - #maqdest = ord(packet['maqconf']) >> 4 - #forwardPacket(rawpacket) - return packet - except ValueError: - print "*** ERRO *** Mensagem recebida e invalida." - return False - except socket.error: - return False - -def forwardPacket(fpacket): - sockmgr.sendPacket(outsocket, nip, nport, fpacket) - -def setPcID(newpcid): - global pcId - pcId = newpcid - -#sockets = (insocket, outsocket) - tip: IO - [I]nput/[O]utput Socket -def startNetwork(sockets, nmip, nmport, sendToken): # Inicia a rede - global insocket, outsocket, nip, nport, pcId, lastTokenTime, hasToken - insocket = sockets[0] - outsocket = sockets[1] - nip = nmip - nport = nmport - iniciou = False - while not iniciou: - aguardaPacote = True - if sendToken: - precisaReenviar = True - else: - precisaReenviar = False - while aguardaPacote: - if precisaReenviar: - prot.resetMessage() - prot.setAccessCtrl(1, 0) - prot.setMaqorig(0) - prot.setMaqdest(4) - prot.setMaquinaLeu(1) - packet = prot.getPacket() - sockmgr.sendPacket(outsocket, nmip, nmport, packet) - precisaReenviar = False - insocket.settimeout(0.5) - packetData = None - try: - packetData = insocket.recv(8096) - dictPacket = prot.decodePacket(packetData) - isValidPacket = True - if(ord(dictPacket['accessctrl']) != 0b01000000 and - ord(dictPacket['accessctrl']) != 0b10000000): - isValidPacket = False - if(isValidPacket and (ord(dictPacket['status']) == 0xFF or - ord(dictPacket['accessctrl']) == 0b1000000)): - # Pacote proprio retornou, rede ok - prot.resetMessage() - prot.setAccessCtrl(0, 1) - prot.setMaqorig(0) - prot.setMaqdest(4) - for i in range(0,4): - prot.setMaquinaLeu(i+1) - packet = prot.getPacket() - sockmgr.sendPacket(outsocket, nmip, nmport, packet) - if pcId == 0: - while not hasToken: - insocket.settimeout(1000.0) # Testar None ou 0 aqui depois. - packetData = insocket.recv(8096) - packet = prot.decodePacket(packetData) - if((ord(packet['accessctrl']) & 0x40) == 0x40): - print "Comecei com o Token" - hasToken = True - print("Conectado com sucesso!") - insocket.setblocking(0) - lastTokenTime = int(round(time.time() * 1000)) - return - else: - # Pacote de rede de outro computador - i = 1 - while(((ord(dictPacket['status']) & 0xF) >> i) > 0): - i += 1 - pcId = i - prot.resetMessage() - prot.setAccessCtrl(1,0) - prot.setMaqorig(0) - prot.setMaqdest(4) - for i in range(0, pcId+1): - prot.setMaquinaLeu(i+1) - newPacket = prot.getPacket() - sockmgr.sendPacket(outsocket, nmip, nmport, newPacket) - except socket.timeout: - if sendToken: - precisaReenviar = True diff --git a/Outros/chatfeliz/src/networkManager.pyc b/Outros/chatfeliz/src/networkManager.pyc deleted file mode 100644 index e513c0f461be9b57e538b428152ca51ade7d54a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9018 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 diff --git a/Outros/chatfeliz/src/protocolo.py b/Outros/chatfeliz/src/protocolo.py deleted file mode 100644 index 2713591..0000000 --- a/Outros/chatfeliz/src/protocolo.py +++ /dev/null @@ -1,79 +0,0 @@ -import struct -import zlib - -inidelim = 0b01011010 -accessctrl = 0 -maqdest = 0 -maqorig = 0 -tamanho = 0 -data = "" -crc = 0 -msgstatus = 0 - -def resetMessage(): - global accessctrl, maqdest, maqorig, tamanho, data, crc, msgstatus - accessctrl = 0 - maqdest = 0 - maqorig = 0 - tamanho = 0 - data = "" - crc = 0 - msgstatus = 0 - -def setAccessCtrl(isToken, isMonitor): - global accessctrl - accessctrl = accessctrl | (0b10000000 if isToken else 0b0) | (0b01000000 if isMonitor else 0b0) - -def setMaqorig(origem): - global maqorig - maqorig = origem - -def setMaqdest(destino): - global maqdest - maqdest = destino - -def setMensagem(mensagem): - global tamanho, data - data = mensagem - tamanho = len(mensagem) - -def calcCRC(packet): - global crc - #confmaq = ((maqdest << 4) + maqorig) % 256 - #csformat = "2ci%ds" % tamanho - #cs = struct.pack(csformat, chr(accessctrl % 256), chr(confmaq), tamanho, data.encode('ascii')) - crc = zlib.crc32(packet[1:(8+tamanho)]) & 0xFFFFFFFF - -def setMaquinaLeu(maq): - global msgstatus - maq -= 1 - if(maq > 3): - maq = 3 - msgstatus = msgstatus | (0b1 << maq) | (0b1 << (maq + 4)) - -def getPacket(): - global crc - msgformat = "3ci%dsIc" % tamanho - confmaq = ((maqdest << 4) + maqorig) % 256 - crc = 0 - calcCRC(struct.pack(msgformat, chr(inidelim), chr(accessctrl & 255), chr(confmaq), tamanho, data, crc, chr(msgstatus & 255))) - return struct.pack(msgformat, chr(inidelim), chr(accessctrl & 255), chr(confmaq), tamanho, - data, crc, chr(msgstatus & 255)) - -def decodePacket(packet): - pinidelim, paccessctrl, pmaqconf, ptamanho = struct.unpack("3ci", packet[:8]) - pdata, pcrc, pmsgstatus = struct.unpack("%dsic" % ptamanho, packet[8:]) - newcrc = zlib.crc32(packet[1:(8+ptamanho)]) & 0xFFFFFFFF - if(ord(pinidelim) != inidelim or (pcrc & 0xFFFFFFFF) != newcrc): - raise ValueError("packet malformatado") - return {'accessctrl': paccessctrl, 'maqconf': pmaqconf, 'tamanho': ptamanho, 'data': pdata, - 'crc': pcrc, 'status': pmsgstatus} - -def loadDecodedPacket(dpacket): - global accessctrl, maqorig, maqdest, tamanho, data, msgstatus - accessctrl = ord(dpacket['accessctrl']) - maqdest = ord(dpacket['maqconf']) >> 4 - maqorig = ord(dpacket['maqconf']) % (2**4) - tamanho = dpacket['tamanho'] - data = dpacket['data'] - msgstatus = ord(dpacket['status']) diff --git a/Outros/chatfeliz/src/protocolo.pyc b/Outros/chatfeliz/src/protocolo.pyc deleted file mode 100644 index d84c240335ab6b6f75428f17fdca8e45eaff37cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3830 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 Klbw^3lM?{Dk_yTI diff --git a/Outros/chatfeliz/src/socketManager.py b/Outros/chatfeliz/src/socketManager.py deleted file mode 100644 index 50b928d..0000000 --- a/Outros/chatfeliz/src/socketManager.py +++ /dev/null @@ -1,12 +0,0 @@ -import socket - -def openSocket(): - sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - return sock - -def bindSocket(sock, port, ip="0.0.0.0"): - sock.bind((ip, port)) - -def sendPacket(sock, destip, destport, netpacket): - return sock.sendto(netpacket, (destip, destport)) - diff --git a/Outros/chatfeliz/src/socketManager.pyc b/Outros/chatfeliz/src/socketManager.pyc deleted file mode 100644 index 84d0cc2c69974c0bb89a2c5e5060917746e27703..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmZSn%*&Ok>J*mD00m483=9qo3=GA33=9k@3=AoZ3^@!8Q49<zObjgy3{i{>Da;Hh zEDSA-3{gxBDXd^YW{|RA4K@Y_hRpx}|Nr*`8^_4Nz`)GFz~BrrPKJSjp@e}U3qmr2 z*-Q-0OboRQ3^fc4!5Sddei|V4B_MN(^OLhvOG?-o7#JMg;ywLbLrS<97#M>6oxS5- z+=Co_!5T_fKxXGBXKR3*4<?E;7#JAzGxBp&_0v*|@)Gk>^7UQv%ky&b6H|)ylQR-a zbkkCEGOKiR6N^hyi*yZ)Owx?alZ}#7jEqu^QcO*aj7&@ojV#hq4a`hUl8jPQER2$p zj4kwwi<0#ruJTRHOH5BK(krM0yD7gQH7^+KT#)OFK~7>|lwd3dx!phy43j}JFbob4 zaR#uzvltj^m>6mp8Pb>-ni&}wQxHJ`3J|dWk}~sBzyT8kG65`9kY7|%0*b240<fpS z1pR#uav8+uAioxa9K^tw3<>}k2K!YE;a6smUu&4a-erQvI@qh=SWnGMDaqFW>4ta~ zB$$#~T#{K(!U0N<sl_E=zjHD$Fyy6{6eNOD3E1~wg8o5JoSK&s0Coi^c|wB#;sH>S s3<7%v<n$n31_lPOBM}6BoeOe>O>TZlX-=vgD8!3Ffy=|h$-=`70G3$hU;qFB diff --git a/Outros/listener.c b/Outros/listener.c deleted file mode 100644 index 36de123..0000000 --- a/Outros/listener.c +++ /dev/null @@ -1,95 +0,0 @@ -/* -** listener.c -- a datagram sockets "server" demo -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> -#include <string.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> - -#define MYPORT "4950" // the port users will be connecting to - -#define MAXBUFLEN 100 - -// get sockaddr, IPv4 or IPv6: -void *get_in_addr(struct sockaddr *sa) -{ - if (sa->sa_family == AF_INET) { - return &(((struct sockaddr_in*)sa)->sin_addr); - } - - return &(((struct sockaddr_in6*)sa)->sin6_addr); -} - -int main(void) -{ - int sockfd; - struct addrinfo hints, *servinfo, *p; - int rv; - int numbytes; - struct sockaddr_storage their_addr; - char buf[MAXBUFLEN]; - socklen_t addr_len; - char s[INET6_ADDRSTRLEN]; - - memset(&hints, 0, sizeof hints); - hints.ai_family = AF_INET; // set to AF_INET to force IPv4 - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_PASSIVE; // use my IP - - if ((rv = getaddrinfo(NULL, MYPORT, &hints, &servinfo)) != 0) { - fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); - return 1; - } - - // loop through all the results and bind to the first we can - for(p = servinfo; p != NULL; p = p->ai_next) { - if ((sockfd = socket(p->ai_family, p->ai_socktype, - p->ai_protocol)) == -1) { - perror("listener: socket"); - continue; - } - - if (bind(sockfd, p->ai_addr, p->ai_addrlen) == -1) { - close(sockfd); - perror("listener: bind"); - continue; - } - - break; - } - - if (p == NULL) { - fprintf(stderr, "listener: failed to bind socket\n"); - return 2; - } - - freeaddrinfo(servinfo); - - printf("listener: waiting to recvfrom...\n"); - - addr_len = sizeof their_addr; - if ((numbytes = recvfrom(sockfd, buf, MAXBUFLEN-1 , 0, - (struct sockaddr *)&their_addr, &addr_len)) == -1) { - perror("recvfrom"); - exit(1); - } - - printf("listener: got packet from %s\n", - inet_ntop(their_addr.ss_family, - get_in_addr((struct sockaddr *)&their_addr), - s, sizeof s)); - printf("listener: packet is %d bytes long\n", numbytes); - buf[numbytes] = '\0'; - printf("listener: packet contains \"%s\"\n", buf); - - close(sockfd); - - return 0; -} diff --git a/Outros/makefile b/Outros/makefile deleted file mode 100644 index 09562cc..0000000 --- a/Outros/makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - g++ Client.c -o cliente - gcc Servidor.c -o servidor diff --git a/Outros/ring.c b/Outros/ring.c deleted file mode 100644 index ba87679..0000000 --- a/Outros/ring.c +++ /dev/null @@ -1,238 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/socket.h> -#include <sys/time.h> -#include <ctype.h> -#include <netdb.h> -#include <netinet/in.h> -#include <pthread.h> - -struct msg_type { - char priority, src, dest, read, bat; - char data[MAX_MSG_LENGTH]; - struct msg_type *next; -}; - -struct connection_data { - int sock; - struct sockaddr_in recaddr, sndaddr; // create socket receive,send -}; - -static struct msg_type *msgbase = NULL; -static unsigned int msgcounter = 0; - -double timestamp() { - struct timeval tp; - - gettimeofday(&tp, NULL); - - return ((double)(tp.tv_sec + tp.tv_usec/1000000.0)); -} - -int readline(char str[], int max, FILE *stream) { - int i = 0, c; - - while((c = getc(stream)) != '\n' && c != EOF) { - if((max--) > 1) - str[i++] = c; - } - - str[i++] = '\0'; - - return (max <= 0) ? -1 : i; -} - -int confighost(struct connection_data *cd) { - struct hostent *h; - - if((cd->sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - perror("socket"); - return -1; - } - - if((h = gethostbyname(MACHINE_HOST)) == NULL) { //nome maquina de origem - perror("gethostbyname"); - return -2; - } - -/*sockaddr_in is the same size as sockaddr, but internally the sizes are the same because of a slight hack. That hack is sin_zero. Really the length of useful data in sockaddr_in is shorter than sockaddr. But the difference is padded in sockaddr_in using a small buffer; that buffer is sin_zero*/ - - cd->recaddr.sin_family = AF_INET; //conecao tipo UDP - cd->recaddr.sin_port = htons(MACHINE_SOURCE_PORT);//port number - memset(cd->recaddr.sin_zero, 0, sizeof(cd->recaddr.sin_zero));//inicialize sin_zero to 0 to prevent bugs - memcpy(&cd->recaddr.sin_addr, h->h_addr_list[0], h->h_length);// copy the network address to sockaddr_in structure - - //connect - if(bind(cd->sock, (struct sockaddr *) &cd->recaddr, sizeof(struct sockaddr_in)) < 0) { - perror("bind"); - return -3; - } - - if((h = gethostbyname(MACHINE_DEST_HOST)) == NULL) {//nome maquina destino - perror("gethostbyname"); - return -4; - } - - cd->sndaddr.sin_family = AF_INET;//conexao UDP - cd->sndaddr.sin_port = htons(MACHINE_DEST_PORT);//port number - memset(cd->sndaddr.sin_zero, 0, sizeof(cd->sndaddr.sin_zero));//inicialize sin_zero to 0 to prevent bugs - memcpy(&cd->sndaddr.sin_addr, h->h_addr_list[0], h->h_length);// copy the network address to sockaddr_in structure - return 0; -} - -void *receive_data(void *args) { - struct msg_type msg, answer; - struct connection_data *condata; - struct msg_type *m; - double battime; - char expired; - socklen_t recvlen; - - condata = (struct connection_data *) args; - - while(1) { - if(recvfrom(condata->sock, &msg, sizeof msg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->recaddr, &recvlen) > 0) { - if(msg.bat == 1) { - battime = timestamp(); - expired = 0; - - if(msgbase != NULL && msgbase->priority >= msg.priority) { - msg.priority = msgbase->priority; - sendto(condata->sock, &msg, sizeof msg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->sndaddr, sizeof(struct sockaddr_in)); - recvfrom(condata->sock, &msg, sizeof msg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->recaddr, &recvlen); - - if(msg.bat == 1) { - while(msgcounter > 0 && msgbase != NULL && msgbase->priority == msg.priority && !expired) { - do { - if(timestamp() - battime < BAT_TIME) { - expired = 1; - } - - sendto(condata->sock, msgbase, sizeof(struct msg_type) - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->sndaddr, sizeof(struct sockaddr_in)); - } while(recvfrom(condata->sock, &answer, sizeof(struct msg_type) - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->recaddr, &recvlen) && !expired); - - if(answer.src == MACHINE_TAG) { - if(answer.read == 0) { - fprintf(stdout, "> Destino não encontrado!\n"); - } - - --msgcounter; - - m = msgbase; - msgbase = msgbase->next; - free(m); - } - } - - if(msgbase == NULL) { - msg.priority = 0; - } else { - msg.priority = msgbase->priority; - } - } - } - - sendto(condata->sock, &msg, sizeof msg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->sndaddr, sizeof(struct sockaddr_in)); - } else { - if(msg.dest == MACHINE_TAG) { - msg.read = 1; - fprintf(stdout, "\r%c: %s\n", msg.src, msg.data); - } - - if(msg.src != MACHINE_TAG) { - sendto(condata->sock, &msg, sizeof msg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata->sndaddr, sizeof(struct sockaddr_in)); - } - } - } - } -} - -int main(int argc, const char *argv[]) { - char inpbuf[MAX_MSG_LENGTH + 8]; - char *saveptr; - int n; - struct connection_data condata; //sockets receive and send - struct msg_type *prev, *p, *m; - pthread_t thread_recv; - - if(confighost(&condata) < 0) { //inicialize and connect socket - return -1; - } - - /*receive_data = pointer to the function to be -threaded. - condata = pointer to argument of function*/ - if(pthread_create(&thread_recv, NULL, receive_data, (void *) &condata) != 0) { - perror("pthread_create"); - return -2; - } - -#ifdef START_BAT - struct msg_type batmsg; - - batmsg.src = MACHINE_TAG; - batmsg.bat = 1; - batmsg.priority = 0; - - if(sendto(condata.sock, &batmsg, sizeof batmsg - sizeof(struct msg_type *), 0, (struct sockaddr *) &condata.sndaddr, sizeof(struct sockaddr_in)) < 0) { - perror("sendto(bat)"); - } -#endif - - while(1) { - if(msgcounter < MAX_MSG_PER_TIME) { - if((n = readline(inpbuf, sizeof(inpbuf), stdin)) > 0) { - m = (struct msg_type *) malloc(sizeof(struct msg_type)); - - if(m == NULL) { - perror("malloc"); - return -3; - } - - m->dest = toupper(*strtok_r(inpbuf, " ", &saveptr)); - m->priority = atoi(strtok_r(NULL, " ", &saveptr)); - m->bat = 0; - m->read = 0; - m->src = MACHINE_TAG; - memcpy(m->data, saveptr, n - (saveptr - inpbuf)); - - if(msgbase != NULL) { - p = msgbase; - prev = NULL; - - while(p != NULL && p->priority >= m->priority) { - prev = p; - p = p->next; - } - - if(prev != NULL) { - prev->next = m; - } else { - msgbase = m; - } - - m->next = p; - } else { - msgbase = m; - msgbase->next = NULL; - } - - ++msgcounter; - } - } - } - - if(pthread_join(thread_recv, NULL) != 0) { - perror("pthread_join"); - return -1; - } - - while(msgbase != NULL) { - m = msgbase; - msgbase = msgbase->next; - free(m); - } - - return 0; -} diff --git a/Outros/talker.c b/Outros/talker.c deleted file mode 100644 index 894c522..0000000 --- a/Outros/talker.c +++ /dev/null @@ -1,67 +0,0 @@ -/* -** talker.c -- a datagram "client" demo -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> -#include <string.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> - -#define SERVERPORT "4950" // the port users will be connecting to - -int main(int argc, char *argv[]) -{ - int sockfd; - struct addrinfo hints, *servinfo, *p; - int rv; - int numbytes; - - if (argc != 3) { - fprintf(stderr,"usage: talker hostname message\n"); - exit(1); - } - - memset(&hints, 0, sizeof hints); - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_DGRAM; - - if ((rv = getaddrinfo(argv[1], SERVERPORT, &hints, &servinfo)) != 0) { - fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); - return 1; - } - - // loop through all the results and make a socket - for(p = servinfo; p != NULL; p = p->ai_next) { - if ((sockfd = socket(p->ai_family, p->ai_socktype, - p->ai_protocol)) == -1) { - perror("talker: socket"); - continue; - } - - break; - } - - if (p == NULL) { - fprintf(stderr, "talker: failed to create socket\n"); - return 2; - } - - if ((numbytes = sendto(sockfd, argv[2], strlen(argv[2]), 0, - p->ai_addr, p->ai_addrlen)) == -1) { - perror("talker: sendto"); - exit(1); - } - - freeaddrinfo(servinfo); - - printf("talker: sent %d bytes to %s\n", numbytes, argv[1]); - close(sockfd); - - return 0; -} -- GitLab