private void sendToBack(int slaveIdx, BufferedReader br) {
	    try {
		mSocket = new Socket(backIPs[slaveIdx], backPorts[slaveIdx]);
		mapperIPs[slaveIdx] = backIPs[slaveIdx];
		mapperPort[slaveIdx] = backPorts[slaveIdx];
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream()));
		bw.write("1\n");
		bw.flush();
		bw.close();
		mSocket.close();

		mSocket = new Socket(backIPs[slaveIdx], backPorts[slaveIdx]);
		System.out.println("[Mapper Backup]socket:  " + backIPs[slaveIdx] + "  " + backPorts[slaveIdx]);

		br = new BufferedReader(new FileReader(filename));
		for (int i = 0; i < preoffset; i++) br.readLine();

		ObjectOutputStream out = new ObjectOutputStream(
			mSocket.getOutputStream());

		int idx = 0;

		out.write((slaveIdx + "\n").getBytes());
		out.flush();

		String s = null;
		while (idx < lenInOnePart && (s = br.readLine()) != null) {
		    preoffset++;
		    byte[] buf = (s + "\n").getBytes();

		    if (s.length() <= 1024) {
			out.write(buf, 0, buf.length);
			out.flush();
		    } else {
			for (int j = 0; j < buf.length; j += 1024) {
			    out.write(buf, j,
				    (j + 1024 >= buf.length) ? buf.length - j : 1024);
			    out.flush();
			}
		    }

		    idx++;
		}

		offset = preoffset;
		mSocket.close();
	    } catch(Exception e) {
		mapperOK = false;
	    }
	}