diff --git a/TCPThreaded/TCPReceiverThreaded$1.class b/TCPThreaded/TCPReceiverThreaded$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..562d18f6698d9be7ec5bc513ecadbefc9a133079
Binary files /dev/null and b/TCPThreaded/TCPReceiverThreaded$1.class differ
diff --git a/TCPThreaded/TCPReceiverThreaded.class b/TCPThreaded/TCPReceiverThreaded.class
new file mode 100644
index 0000000000000000000000000000000000000000..db6b352148ed133897ad8a1679df32f67c3e159f
Binary files /dev/null and b/TCPThreaded/TCPReceiverThreaded.class differ
diff --git a/TCPThreaded/TCPReceiverThreaded.java b/TCPThreaded/TCPReceiverThreaded.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f07d5aba3928b0535af7c8f477dad5ea019d8a9
--- /dev/null
+++ b/TCPThreaded/TCPReceiverThreaded.java
@@ -0,0 +1,28 @@
+import java.io.*;
+import java.net.*;
+class TCPReceiverThreaded {
+    public static void main(String[] args) {
+        try {
+            ServerSocket ss = new ServerSocket(4322);
+            for (;;) {
+                try {
+                    final Socket client = ss.accept();
+                    new Thread(new Runnable() {
+                        public void run() {
+                            try {
+                                BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
+                                String line;
+                                while ((line = in .readLine()) != null) System.out.println(line + " received");
+                                client.close();
+                            } catch (Exception e) {}
+                        }
+                    }).start();
+                } catch (Exception e) {
+                    System.out.println("error " + e);
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("error " + e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/TCPThreaded/TCPReceiverThreadedClass.java b/TCPThreaded/TCPReceiverThreadedClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca6bf84b93c207ca893340ea0bcd421f2415bd92
--- /dev/null
+++ b/TCPThreaded/TCPReceiverThreadedClass.java
@@ -0,0 +1,33 @@
+import java.io.*;
+import java.net.*;
+class TCPReceiverThreadedClass {
+    public static void main(String[] args) {
+        try {
+            ServerSocket ss = new ServerSocket(4322);
+            for (;;) {
+                try {
+                    Socket client = ss.accept();
+                    new Thread(new ServiceThread(client)).start();
+                } catch (Exception e) {
+                    System.out.println("error " + e);
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("error " + e);
+        }
+    }
+    static class ServiceThread implements Runnable {
+        Socket client;
+        ServiceThread(Socket c) {
+            client = c;
+        }
+        public void run() {
+            try {
+                BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
+                String line;
+                while ((line = in .readLine()) != null) System.out.println(line + " received");
+                client.close();
+            } catch (Exception e) {}
+        }
+    }
+}
\ No newline at end of file
diff --git a/TCPThreaded/TCPSender.class b/TCPThreaded/TCPSender.class
new file mode 100644
index 0000000000000000000000000000000000000000..5dc7a8707d9d38dea3cf0fb3c9101c2ea91e25ab
Binary files /dev/null and b/TCPThreaded/TCPSender.class differ
diff --git a/TCPThreaded/TCPSender.java b/TCPThreaded/TCPSender.java
new file mode 100644
index 0000000000000000000000000000000000000000..2fd40078d7605092e991ec18585f737fae74d871
--- /dev/null
+++ b/TCPThreaded/TCPSender.java
@@ -0,0 +1,18 @@
+import java.io.*;
+import java.net.*;
+class TCPSender {
+    public static void main(String[] args) {
+        try {
+            Socket socket = new Socket("isaac-VirtualBox", 4322);
+            PrintWriter out = new PrintWriter(socket.getOutputStream());
+            for (int i = 0; i < 10; i++) {
+                out.println("TCP message " + i);
+                out.flush();
+                System.out.println("TCP message " + i + " sent");
+                Thread.sleep(1000);
+            }
+        } catch (Exception e) {
+            System.out.println("error" + e);
+        }
+    }
+}