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)
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