コード例 #1
0
	def _recv(self, aPrint = True):
		try:		
			buff = self.m_clientSock.recv(serverproperties.SERVER_MAX_RECV)		
			done = False
			while not done:
				if '\n' in buff:
					(line,buff) = buff.split('\n',1)	#split on \n, max 1 split
					if aPrint:
						print "[%s] %s %s:%s" % (serverproperties._getTime(),serverproperties.SERVER_GOT_MSG,self.m_server.m_dict[self.m_clientSock],line)
					else:
						print "[%s] %s %s of length %d" % (serverproperties._getTime(),serverproperties.SERVER_GOT_MSG,self.m_server.m_dict[self.m_clientSock],len(line))

					return line+'\n'
				else:
					more = self.m_clientSock.recv(serverproperties.SERVER_MAX_RECV)
					if not more:
						done = True
					else:
						buff += more

			if buff:
				if aPrint:
						print "[%s] %s %s:%s" % (serverproperties._getTime(),serverproperties.SERVER_GOT_MSG,self.m_server.m_dict[self.m_clientSock],buff)
				else:
					print "[%s] %s of length %s:%d" % (serverproperties._getTime(),serverproperties.SERVER_GOT_MSG,self.m_server.m_dict[self.m_clientSock],len(buff))
				return buff
		except:
			print "[%s] %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CANNOT_RECV)
			self.m_die = True
コード例 #2
0
	def _cleanUp(self):
		print "[%s] %s %s" % (serverproperties._getTime(),serverproperties.SERVER_CLEANUP_MSG,self.m_addr)
		for k in self.m_dict.keys():
			try:
				k.send(serverproperties.SERVER_CLIENT_QUIT_MSG+'\n')
				k.shutdown(2)
				k.close()
			except:
				print "[%s] %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CLOSING_CLIENT_SOCK)
		try:
			self.m_sock.shutdown(2)
			self.m_sock.close()
		except:
			print "[%s] %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CLOSING_SOCK)
コード例 #3
0
	def start(self):
		print "[%s] server started" % serverproperties._getTime()
		print "Address: ",(self.m_addr)

		#start listening
		try:
			(clientSock,clientAddr) = self.m_sock.accept()
			self.m_dict[clientSock] = clientAddr
			handler = clienthandler(clientSock,self)
			self.m_handlers[clientSock] = handler
			print "[%s] %s - %s" % (serverproperties._getTime(),serverproperties.SERVER_NEW_CLIENT,clientAddr)
			handler.start()
		except:
			print "[%s] %s" % (serverproperties._getTime(),serverproperties.SERVER_CANNOT_ACCEPT_MSG)
コード例 #4
0
	def run(self):
		while True:
			inp = raw_input()				
			if inp in serverproperties.SERVER_QUIT_KEY_LIST:
				print "[%s] %s" % (serverproperties._getTime(),serverproperties.SERVER_QUIT_RECEIVED)
				for i in self.m_servers:
					i._cleanUp()
				sys.exit(2)
コード例 #5
0
	def _welcomeClient(self):	
		msg = "%s %s" % (serverproperties.SERVER_WELCOME_MSG, repr(self.m_server.m_addr))
		try:
			self.m_clientSock.send(msg+'\n')			
		except:
			print "[%s] %s %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CANNOT_SEND,self.m_server.m_dict[self.m_clientSock])
			self.m_clientSock.shutdown(2)
			self.m_clientSock.close()
			self.m_die = True
コード例 #6
0
	def _checkAndReply(self, aMsg):
		aMsg = aMsg.strip()
		if aMsg == serverproperties.CHOICE_SEND_KEY:
			print "[%s] Receiving key" % serverproperties._getTime()
			msg = self._recv(False).strip()
			print "[%s] Received key" % serverproperties._getTime()
			(pk, esk) = ast.literal_eval(msg)
			FHC.writeKeyToFile("None", pk, esk)
			self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n")
		
		elif aMsg == serverproperties.CHOICE_INSERT:
			print "[%s] Receiving Record" % serverproperties._getTime()
			msg = self._recv(False).strip()
			print "[%s] Received Record" % serverproperties._getTime()
			r = ast.literal_eval(msg)
			aRecord = record.recordDTO(r)
			controller.insertRecord(aRecord)
			self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n")
		
		elif aMsg == serverproperties.CHOICE_CHECK_ROLL:
			print "[%s] Receiving Query" % serverproperties._getTime()
			msg = self._recv().strip()
			print "[%s] Received Query" % serverproperties._getTime()
			rid=controller.getIdByRollNo(msg)
			self.m_clientSock.send(str(rid)+"\n")
			time.sleep(1)
			self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n")
		
		elif aMsg == serverproperties.CHOICE_GET_ROW_BY_ID:
			msg = self._recv()
			if msg is not None:
				dto = controller.getRowById(int(msg.strip()))
			if not self.m_die:			
				try:
					self.m_clientSock.send(repr(dto)+'\n')
				except:
					print "[%s] %s %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CANNOT_SEND,self.m_server.m_dict[self.m_clientSock])				
					self.m_die = True
			time.sleep(1)
			self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n")
		
		elif aMsg == serverproperties.CHOICE_INCREMENT_MARKS_BY_ID:
			pass
		
		elif aMsg == serverproperties.CHOICE_EVAL_TOTAL:
			rows = controller.getAllRows()
			for row in rows:
				mark1 = row.getMarks1()
				mark2 = row.getMarks2()
				weight1 = row.getWeight1()
				weight2 = row.getWeight2()
				total = FHC.do4BitWeightedSum(mark1, weight1, mark2, weight2)
				row.setTotal(total)
				controller.updateStudentRecord(row)
			self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n")
		
		elif aMsg == serverproperties.SERVER_CLIENT_QUIT_MSG:
			self._checkQuit(aMsg)