def run(self):
        raw_data = []
        recv_data = 0

        # set RTT
        rtt = 2
        count = 0
        alarm = time.time() + rtt

        enter = 0

        while True:  ## Loop infinitely

            if enter == 0:
                print "Directory server starts receiving new messages:"
                data, address = self.sock.recvfrom(1024)
                raw_data.append(data)
                recv_data = frag.msg_reassemb(raw_data)
                enter = 1
            else:
                self.sock.settimeout(5)
                try:
                    if recv_data == 0:
                        data, server = self.sock.recvfrom(1024)
                        raw_data.append(data)
                        recv_data = frag.msg_reassemb(raw_data)
                    if recv_data:
                        print "200(OK)"
                        enter = 0

                        # send ack to client
                        ack = (1, 'none')
                        sent = self.sock.sendto(pickle.dumps(ack), address)

                        flag, file_name = pickle.loads(recv_data)
                        print "file_name:", file_name

                        if flag != 2:
                            t = thread.start_new_thread(
                                self.udp_processing, (
                                    flag,
                                    file_name,
                                    address,
                                ))
                            self._thread_[address] = t

                        else:
                            for th in self._thread_.keys():
                                if th == address:
                                    print "UDP server closing..."
                                    self._thread_.exit()

                except socket.timeout:
                    data = "NO RESPONSE"
                    print "Failed to receive the complete file:"
                    print "400(ERROR)"
                    raw_data = []
                    enter = 0
    def run(self): 
 	raw_data = []
	recv_data = 0

        # set RTT
        rtt = 2
        count = 0
        alarm = time.time() + rtt

	enter = 0

        while True: ## Loop infinitely
            try:
	        if enter == 0:
                    print "Directory server starts receiving new messages:"
		    data, address = self.sock.recvfrom(1024)
		    raw_data.append(data)
	            recv_data = frag.msg_reassemb(raw_data)
		    enter = 1
	        else:
                    self.sock.settimeout(5)
                    try:
		        if recv_data == 0:
                            data, address = self.sock.recvfrom(1024)
	                    raw_data.append(data)
		            recv_data = frag.msg_reassemb(raw_data)
                        if recv_data:
                            print "200(OK)"
			    enter = 0         

	         	    # send ack to client
		            ack = 1
		            sent = self.sock.sendto(pickle.dumps(ack), address)

                            self.message = pickle.loads(recv_data)

			    print "self.message:", self.message

                            if self.message[0] != 2:
                                t = thread.start_new_thread(self.udp_processing, (self.message[0], self.message[1], self.message[2], address,))

                            else:
				t = thread.start_new_thread(self.udp_processing, (self.message[0], self.message[1], self.message[2], address,))
#				self._thread_[address] = t
#			        for th in self._thread_.keys():
#				    if th == address:
#                           	        print "UDP server closing..."
#                              	        self._thread_.exit()
				t.exit()
                    except socket.timeout:
		        data = "NO RESPONSE"
                        print "Failed to receive the complete file:"
		        print "400(ERROR)"
		        raw_data = []
		        enter = 0

	    except socket.timeout: 
		self.sock.settimeout(5)	
Esempio n. 3
0
    def ressem_recv(self):
        raw_data = []
        recv_data = 0

        # set RTT
        rtt = 2
        count = 0
        alarm = time.time() + rtt

        enter = 0

        while True:  ## Loop infinitely
            if enter == 0:
                data, address = self.sock.recvfrom(1024)
                raw_data.append(data)
                recv_data = frag.msg_reassemb(raw_data)
                enter = 1
            else:
                self.sock.settimeout(5)
                try:
                    if recv_data == 0:
                        data, server = self.sock.recvfrom(1024)
                        raw_data.append(data)
                        recv_data = frag.msg_reassemb(raw_data)
                    if recv_data:
                        print "200(OK)"
                        enter = 0
                        return recv_data
                        break

                except socket.timeout:
                    print "Failed to receive, exit anyway."
                    print "400(ERROR)"
                    raw_data = []
                    enter = 0
                    break
    def ressem_recv(self):
        raw_data = []
        recv_data = 0

        # set RTT
        rtt = 2
        count = 0
        alarm = time.time() + rtt

        enter = 0

        while True: ## Loop infinitely
            if enter == 0:
                data, address = self.sock.recvfrom(1024)
                raw_data.append(data)
                recv_data = frag.msg_reassemb(raw_data)
                enter = 1
            else:
                self.sock.settimeout(5)
                try:
                    if recv_data == 0:
                        data, server = self.sock.recvfrom(1024)
                        raw_data.append(data)
                        recv_data = frag.msg_reassemb(raw_data)
                    if recv_data:
                        print "200(OK)"
		        enter = 0
	                return recv_data
			break

                except socket.timeout:
                    print "Failed to receive, exit anyway."
                    print "400(ERROR)"
                    raw_data = []
                    enter = 0
	 	    break