def __init__(self, host): self._host = host # Endereco IP do Servidor self._port = 57000 # Porta que o Servidor esta print "Conectando com servidor..." self._udp = socketerror.socketError(socket.AF_INET, socket.SOCK_DGRAM) self._udp.connect((self._host, self._port)) self._udp.setErrorProb(0.1) self._udp.settimeout(5) self.seq_pacote = 0
def __init__(self,host): self._host = host # Endereco IP do Servidor self._port = 57000 # Porta que o Servidor esta print "Conectando com servidor..." self._udp = socketerror.socketError(socket.AF_INET,socket.SOCK_DGRAM) self._udp.connect((self._host,self._port )) self._udp.setErrorProb(0.1) self._udp.settimeout(5) self.seq_pacote = 0
import socket, socketerror HOST = 'localhost' PORT = 12000 s = socketerror.socketError(socket.AF_INET, socket.SOCK_DGRAM) s.setErrorProb(0.5) s.connect((HOST, PORT)) s.sendWithError("teste") data = s.recvWithError(1024) print(data) s.sendWithError("testando") data = s.recvWithError(1024) print(data) s.close()
import socket,socketerror from itertools import cycle import struct HOST = 'localhost' PORT = 12000 s = socketerror.socketError(socket.AF_INET, socket.SOCK_DGRAM) s.setErrorProb(0.1) s.settimeout(2.0) s.connect((HOST, PORT)) #cria um iterador que sera usado para o registro de sequencia iterator = cycle(range(2)) ack = '' arquivo = open('arquivo.txt', 'r') arquivo2 = open('arquivo.txt', 'r') while arquivo2.read(2) != "": texto = arquivo.read(2) indice = str(next(iterator))#sequencia do pacote, muda para o proximo a cada iteracao pacote = indice + texto #monta o pacote s.sendWithError(pacote) #envia para o servidor #estado que espera o ack correto while 1: try: ack = s.recvWithError(1024) if ack == indice: print (ack)
def main(): nomecoletor = "aluizio" #Para cada máquina virtual esse nome deve mudar log = LogDeErros() try: coletor = Coletor() serverPort = 12000 clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) clientSocket.settimeout(3) errorSocket = socketerror.socketError(socket.AF_INET,socket.SOCK_DGRAM) errorSocket.setErrorProb(0.1) errorSocket.settimeout(1) serverAddress = "" serverName = '<broadcast>' message= "" while True: message = "adicionar" clientSocket.sendto(message,(serverName, serverPort)) message = nomecoletor clientSocket.sendto(message,(serverName, serverPort)) try: returnMessage, serverAddress = clientSocket.recvfrom(2048) #Aguarda receber de retorno if returnMessage.upper() == "ADICIONADO": print "O coletor foi adicionado\n" break except socket.timeout: print "Sem resposta, enviando nova solicitação." #coletor.start() while True: print "Aguandando ordens do Monitor\n" clientSocket.settimeout(None) returnMessage, serverAddress = clientSocket.recvfrom(2048) print returnMessage if returnMessage.upper() == "COLETAR": if coletor.stoprequest.isSet(): coletor.resume() else: coletor.start() if returnMessage.upper() == "COLETARTESTE": coletor.teste() if returnMessage.upper() == "PARAR": coletor.stop() print coletor.isAlive() if returnMessage.upper() == "LOG": ########################################## Transferência Confiável - Client ########################################### numero_do_pacote = 0 errorSocket.connect((serverAddress)) nome_do_arquivo, serverAddress = clientSocket.recvfrom(2048) # recebe nome do arquivo de log que deve enviar nome_do_arquivo = open(nome_do_arquivo,'r+b') # abre o Arquivo lendo_arquivo = nome_do_arquivo.read(40) # lê um pedaço do arquivo e salva numa variável while lendo_arquivo: # loop enquanto ainda estiver lendo o arquivo receber = '' # inicializando valor padrão while (receber != 'ACK'): # loop enquanto não recebe ack enviar = lendo_arquivo+"&"+str(numero_do_pacote) # pedaço do arquivo + sequencia do pacote errorSocket.sendWithError(enviar) # envia a variável com chance de erro print "enviou pedaço do arquivo" try: print "esperando receber ack" msg = errorSocket.recvWithError(1024) # espera 5s para receber ack, se estourar entra no except print msg dados = msg.split('&') # separa o ack e o número de sequência receber = dados[0] # carrega o ack para disparar loop if (str(numero_do_pacote) == dados[1]): lendo_arquivo = nome_do_arquivo.read(40) # lê próxima parte do arquivo numero_do_pacote += 1 # incrementa o número de sequência do pacote except (socket.timeout): # tempo de resposta estourou print "estourou o tempo" break nome_do_arquivo.close() # fechando arquivo print "fechou o arquivo" while True: errorSocket.sendWithError("fim&*") # envia pacote final try: msg = errorSocket.recvWithError(1024) # espera 5s para receber ack, se estourar entra no except break except socket.timeout: # tempo de resposta estourou print "estourou o tempo" print "Enviou o fim" ##################################### ########################################### ###################################### clientSocket.close() except (KeyboardInterrupt, SystemExit): coletor.stoprequest.set() log.setErro(sys.exc_info()[1],nomecoletor) print "Um erro ocorreu!" os._exit(0)
def main(): nomecoletor = "aluizio" #Para cada máquina virtual esse nome deve mudar log = LogDeErros() try: coletor = Coletor() serverPort = 12000 clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) clientSocket.settimeout(3) errorSocket = socketerror.socketError(socket.AF_INET, socket.SOCK_DGRAM) errorSocket.setErrorProb(0.1) errorSocket.settimeout(1) serverAddress = "" serverName = '<broadcast>' message = "" while True: message = "adicionar" clientSocket.sendto(message, (serverName, serverPort)) message = nomecoletor clientSocket.sendto(message, (serverName, serverPort)) try: returnMessage, serverAddress = clientSocket.recvfrom( 2048) #Aguarda receber de retorno if returnMessage.upper() == "ADICIONADO": print "O coletor foi adicionado\n" break except socket.timeout: print "Sem resposta, enviando nova solicitação." #coletor.start() while True: print "Aguandando ordens do Monitor\n" clientSocket.settimeout(None) returnMessage, serverAddress = clientSocket.recvfrom(2048) print returnMessage if returnMessage.upper() == "COLETAR": if coletor.stoprequest.isSet(): coletor.resume() else: coletor.start() if returnMessage.upper() == "COLETARTESTE": coletor.teste() if returnMessage.upper() == "PARAR": coletor.stop() print coletor.isAlive() if returnMessage.upper() == "LOG": ########################################## Transferência Confiável - Client ########################################### numero_do_pacote = 0 errorSocket.connect((serverAddress)) nome_do_arquivo, serverAddress = clientSocket.recvfrom( 2048) # recebe nome do arquivo de log que deve enviar nome_do_arquivo = open(nome_do_arquivo, 'r+b') # abre o Arquivo lendo_arquivo = nome_do_arquivo.read( 40) # lê um pedaço do arquivo e salva numa variável while lendo_arquivo: # loop enquanto ainda estiver lendo o arquivo receber = '' # inicializando valor padrão while (receber != 'ACK'): # loop enquanto não recebe ack enviar = lendo_arquivo + "&" + str( numero_do_pacote ) # pedaço do arquivo + sequencia do pacote errorSocket.sendWithError( enviar) # envia a variável com chance de erro print "enviou pedaço do arquivo" try: print "esperando receber ack" msg = errorSocket.recvWithError( 1024 ) # espera 5s para receber ack, se estourar entra no except print msg dados = msg.split( '&') # separa o ack e o número de sequência receber = dados[ 0] # carrega o ack para disparar loop if (str(numero_do_pacote) == dados[1]): lendo_arquivo = nome_do_arquivo.read( 40) # lê próxima parte do arquivo numero_do_pacote += 1 # incrementa o número de sequência do pacote except (socket.timeout): # tempo de resposta estourou print "estourou o tempo" break nome_do_arquivo.close() # fechando arquivo print "fechou o arquivo" while True: errorSocket.sendWithError("fim&*") # envia pacote final try: msg = errorSocket.recvWithError( 1024 ) # espera 5s para receber ack, se estourar entra no except break except socket.timeout: # tempo de resposta estourou print "estourou o tempo" print "Enviou o fim" ##################################### ########################################### ###################################### clientSocket.close() except (KeyboardInterrupt, SystemExit): coletor.stoprequest.set() log.setErro(sys.exc_info()[1], nomecoletor) print "Um erro ocorreu!" os._exit(0)