diff --git a/fileTransfer/FTClient.class b/fileTransfer/FTClient.class
new file mode 100644
index 0000000000000000000000000000000000000000..208042475ace482b2168700aa6542fc8b06b8b5b
Binary files /dev/null and b/fileTransfer/FTClient.class differ
diff --git a/fileTransfer/FTClient.java b/fileTransfer/FTClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..504fb10b1c780b6ba1d44731a5eb419174fa19ca
--- /dev/null
+++ b/fileTransfer/FTClient.java
@@ -0,0 +1,50 @@
+import java.io.*;
+import java.net.*;
+public class FTClient {
+    public static void main(String[] args) throws IOException {
+        System.out.println(args[0] + " " + args[1] + " " + args[2] + " " + args[3]);
+        if (args[1].equals("put")) {
+            File inputFile = new File(args[2]);
+            FileInputStream in = new FileInputStream(inputFile);
+            try {
+                Socket socket = new Socket(args[0], 4323);
+                OutputStream out = socket.getOutputStream();
+                out.write(("put" + " " + args[3] + " ").getBytes());
+                byte[] buf = new byte[1000];
+                int buflen;
+                while ((buflen = in.read(buf)) != -1) {
+                    System.out.print("*");
+                    out.write(buf, 0, buflen);
+                }
+                out.close();
+            } catch (Exception e) {
+                System.out.println("error" + e);
+            }
+            System.out.println(); in .close();
+
+        }
+        else if(args[1].equals("get")) {
+            File outputFile = new File(args[2]);
+            FileOutputStream outf = new FileOutputStream(outputFile);
+            try {
+                Socket socket = new Socket(args[0], 4323);
+                OutputStream out = socket.getOutputStream();
+                InputStream in = socket.getInputStream();
+                out.write(("get" + " " + args[3] + " ").getBytes());
+                byte[] buf = new byte[1000];
+                int buflen;
+                while ((buflen = in.read(buf)) != -1) {
+                    System.out.print("*");
+                    outf.write(buf, 0, buflen);
+                }
+                out.close();
+                in.close();
+            } catch (Exception e) {
+                System.out.println("error" + e);
+            }
+            System.out.println();
+            outf.close();
+        }
+        else System.out.println("unrecognised command");
+    }
+}
\ No newline at end of file
diff --git a/fileTransfer/FTServer.class b/fileTransfer/FTServer.class
new file mode 100644
index 0000000000000000000000000000000000000000..4fa2b944c4e286fa346c409140cd0b37d902b2e6
Binary files /dev/null and b/fileTransfer/FTServer.class differ
diff --git a/fileTransfer/FTServer.java b/fileTransfer/FTServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..de67fc07b8d4556412c325182d3357462367c695
--- /dev/null
+++ b/fileTransfer/FTServer.java
@@ -0,0 +1,61 @@
+import java.io.*;
+import java.net.*;
+public class FTServer {
+    public static void main(String[] args) throws IOException {
+        try {
+            ServerSocket ss = new ServerSocket(4323);
+            for (;;) {
+                try {
+                    System.out.println("waiting for connection");
+                    Socket client = ss.accept();
+                    System.out.println("connected");
+                    InputStream in = client.getInputStream();
+                    byte[] buf = new byte[1000];
+                    int buflen;
+                    buflen = in.read(buf);
+                    String firstBuffer = new String(buf, 0, buflen);
+                    int firstSpace = firstBuffer.indexOf(" ");
+                    String command = firstBuffer.substring(0, firstSpace);
+                    System.out.println("command " + command);
+                    if (command.equals("put")) {
+                        int secondSpace = firstBuffer.indexOf(" ", firstSpace + 1);
+                        String fileName = firstBuffer.substring(firstSpace + 1, secondSpace);
+                        System.out.println("fileName " + fileName);
+                        File outputFile = new File(fileName);
+                        FileOutputStream out = new FileOutputStream(outputFile);
+                        out.write(buf, secondSpace + 1, buflen - secondSpace - 1);
+                        while ((buflen = in.read(buf)) != -1) {
+                            System.out.print("*");
+                            out.write(buf, 0, buflen);
+                        }
+                        in.close();
+                        client.close();
+                        out.close();
+                    }
+                    else if(command.equals("get")) {
+                        int secondSpace = firstBuffer.indexOf(" ", firstSpace + 1);
+                        String fileName = firstBuffer.substring(firstSpace + 1, secondSpace);
+                        System.out.println("fileName " + fileName);
+                        File inputFile = new File(fileName);
+                        FileInputStream inf = new FileInputStream(inputFile);
+                        OutputStream out = client.getOutputStream();
+                        while ((buflen = inf.read(buf)) != -1) {
+                            System.out.print("*");
+                            out.write(buf, 0, buflen);
+                        }
+                        in.close();
+                        inf.close();
+                        client.close();
+                        out.close();
+                    }
+                    else System.out.println("unrecognised command");
+                } catch (Exception e) {
+                    System.out.println("error " + e);
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("error " + e);
+        }
+        System.out.println();
+    }
+}
\ No newline at end of file