diff --git a/src/main/java/koz01/java2/lab08/IndexReader.java b/src/main/java/koz01/java2/lab08/IndexReader.java
index 252eefd640f10ce86822c8a1bc48c594744ee1d8..5286608aff0dfc2551e34bda0aede5fefa8f1173 100644
--- a/src/main/java/koz01/java2/lab08/IndexReader.java
+++ b/src/main/java/koz01/java2/lab08/IndexReader.java
@@ -35,6 +35,17 @@ public class IndexReader {
 
 	}
 
+	public byte[] readData(int index) {
+		try (FileChannel fc = FileChannel.open(getFile())) {
+			return getData(fc, index);
+		}
+		catch (IOException exc) {
+			log.error("read", exc);
+			return null;
+		}
+
+	}
+
 	private Path getFile() throws IOException {
 		Path LocalFile = Files.createTempFile(null, null).getParent().resolve(
 			IMAGE_NAME);
diff --git a/src/main/java/koz01/java2/lab08/RemoteIndexServer.java b/src/main/java/koz01/java2/lab08/RemoteIndexServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..77b4d74e05bf29690308033e10e5a04261db2fc1
--- /dev/null
+++ b/src/main/java/koz01/java2/lab08/RemoteIndexServer.java
@@ -0,0 +1,47 @@
+package koz01.java2.lab08;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
+import java.util.Iterator;
+
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+public class RemoteIndexServer {
+
+	public static void main(String[] args) throws IOException {
+		Selector selector = Selector.open();
+
+		ServerSocketChannel ssc = ServerSocketChannel.open();
+		ssc.bind(new InetSocketAddress(Integer.parseInt(args[0])));
+		ssc.configureBlocking(false);
+		ssc.register(selector, SelectionKey.OP_ACCEPT);
+		while (true) {
+			int numberOfKeys = selector.select();
+			if (numberOfKeys == 0) {
+				continue;
+			}
+			Iterator<SelectionKey> keys = selector.selectedKeys().iterator();
+			while (keys.hasNext()) {
+				SelectionKey sk = keys.next();
+				if (sk.channel() == ssc) {
+					SocketChannel sch = ssc.accept();
+					log.info("client connected {}", sch.getRemoteAddress());
+					// TODO register sch
+				}
+				else {
+					SocketChannel sc = (SocketChannel) sk.channel();
+					int index = 0;// TODO get index of image
+					byte []data = new IndexReader().readData(index);
+					// TODO send data.lenght and data
+				}
+				keys.remove();
+			}
+		}
+	}
+
+}