Пример #1
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
 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
Пример #3
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()
Пример #4
0
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)
Пример #5
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)
Пример #6
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)