public String run() {
		System.out.println("opcode is : "+this.opcode.toString()+"----");
		if(this.opcode == Project1bService.OPCODE.SESSIONREAD){
			try {
				System.out.println("before sessionReadClient");
				String sessionTableValue = SessionReadClient();
				System.out.println("after sessionREADCLIENT");
				if(sessionTableValue == null) {
					return null;
				}
				int sessionTableVersion = Integer.valueOf(sessionTableValue.split("_")[0]);
				if(version == sessionTableVersion)
					return sessionTableValue;
				else
					return null;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("rpc failed");
			} 
		} else if(this.opcode == Project1bService.OPCODE.SESSIONWRITE) {
			try {
				String IPP_backup = SessionBackup();
				return IPP_backup;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				//e.printStackTrace();
				System.out.println("rpc failed");
			}
		} else if(this.opcode == Project1bService.OPCODE.SESSIONDELETE) {
			for (int i = 0; i < destAddrs.length; i++) {
				try {
					sendPacket(destAddrs[i], destPorts[i]);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return null;
	}