diff --git a/19-NetworkProgramming/Echo-TCP/.idea/misc.xml b/19-NetworkProgramming/Echo-TCP/.idea/misc.xml
new file mode 100644
index 0000000..225b430
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-TCP/.idea/modules.xml b/19-NetworkProgramming/Echo-TCP/.idea/modules.xml
new file mode 100644
index 0000000..2d66916
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-TCP/.idea/vcs.xml b/19-NetworkProgramming/Echo-TCP/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-TCP/.idea/workspace.xml b/19-NetworkProgramming/Echo-TCP/.idea/workspace.xml
new file mode 100644
index 0000000..11cf2ae
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/.idea/workspace.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1598921127813
+
+
+ 1598921127813
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-TCP/Client.java b/19-NetworkProgramming/Echo-TCP/Client.java
new file mode 100644
index 0000000..477a31a
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/Client.java
@@ -0,0 +1,31 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.Socket;
+import java.util.Scanner;
+
+public class Client {
+ public static void main(String[] args) {
+ try(Socket socket = new Socket("localhost",5000)){
+ BufferedReader iStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+ PrintWriter oStream = new PrintWriter(socket.getOutputStream(),true);
+ Scanner scanner = new Scanner(System.in);
+
+ while(true){
+ System.out.print("input> ");
+ String message = scanner.nextLine();
+
+ oStream.println(message);
+ if(message.equalsIgnoreCase("exit")){
+ String response = iStream.readLine();
+ System.out.println(response);
+ break;
+ }
+ }
+
+ }catch (Exception e){
+ System.out.println("error: "+e.getMessage());
+ }
+ }
+}
diff --git a/19-NetworkProgramming/Echo-TCP/Server.java b/19-NetworkProgramming/Echo-TCP/Server.java
new file mode 100644
index 0000000..6efe157
--- /dev/null
+++ b/19-NetworkProgramming/Echo-TCP/Server.java
@@ -0,0 +1,28 @@
+import java.io.*;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class Server {
+ public static void main(String[] args) {
+ try(ServerSocket serverSocket = new ServerSocket(5000)){
+ System.out.println("listening to port:5000");
+ Socket clientSocket = serverSocket.accept();
+ System.out.println(clientSocket+" connected.");
+ BufferedReader iStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+ PrintWriter oStream = new PrintWriter(clientSocket.getOutputStream(),true);
+
+ while (true){
+ String message = iStream.readLine();
+ System.out.println("client: "+message);
+ if(message.equalsIgnoreCase("exit")){
+ oStream.println("connection closed.");
+ System.out.println("connection closed.");
+ break;
+ }
+ }
+
+ } catch (Exception e){
+ System.out.println("error: "+e.getMessage());
+ }
+ }
+}
diff --git a/19-NetworkProgramming/Echo-UDP/.idea/misc.xml b/19-NetworkProgramming/Echo-UDP/.idea/misc.xml
new file mode 100644
index 0000000..225b430
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-UDP/.idea/modules.xml b/19-NetworkProgramming/Echo-UDP/.idea/modules.xml
new file mode 100644
index 0000000..b4f7038
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-UDP/.idea/vcs.xml b/19-NetworkProgramming/Echo-UDP/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-UDP/.idea/workspace.xml b/19-NetworkProgramming/Echo-UDP/.idea/workspace.xml
new file mode 100644
index 0000000..1fb09d2
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/.idea/workspace.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1598951268653
+
+
+ 1598951268653
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/Echo-UDP/Client.java b/19-NetworkProgramming/Echo-UDP/Client.java
new file mode 100644
index 0000000..143ffbc
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/Client.java
@@ -0,0 +1,31 @@
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.util.Scanner;
+
+public class Client {
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+ byte[] inData = new byte[1024];
+ byte[] outData = new byte[1024];
+ try(DatagramSocket socket = new DatagramSocket()){
+ InetAddress address = InetAddress.getLocalHost();
+ while (true){
+ System.out.print("input> ");
+ String message = scanner.nextLine();
+ outData = message.getBytes();
+ DatagramPacket packet = new DatagramPacket(outData,outData.length,address,5000);
+ socket.send(packet);
+ if(message.equalsIgnoreCase("exit")){
+ packet = new DatagramPacket(inData, inData.length);
+ socket.receive(packet);
+ String response = new String(inData,0,packet.getLength());
+ System.out.println(response);
+ break;
+ }
+ }
+ }catch (Exception e){
+ System.out.println(e);
+ }
+ }
+}
diff --git a/19-NetworkProgramming/Echo-UDP/Server.java b/19-NetworkProgramming/Echo-UDP/Server.java
new file mode 100644
index 0000000..e304384
--- /dev/null
+++ b/19-NetworkProgramming/Echo-UDP/Server.java
@@ -0,0 +1,34 @@
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+
+public class Server {
+ public static void main(String[] args) {
+ byte[] inData = new byte[1024];
+ byte[] outData = new byte[1024];
+ try(DatagramSocket socket = new DatagramSocket(5000)){
+ System.out.println("listening to port:5000");
+
+ while (true){
+ DatagramPacket packet = new DatagramPacket(inData,inData.length);
+ socket.receive(packet);
+
+ InetAddress address = packet.getAddress();
+ int port = packet.getPort();
+
+ String message = new String(inData,0,packet.getLength());
+ System.out.println("client@"+port+": "+message);
+
+ if(message.equalsIgnoreCase("exit")){
+ String response = "connection closed.";
+ outData = response.getBytes();
+ packet = new DatagramPacket(outData,outData.length,address,port);
+ socket.send(packet);
+ }
+ }
+
+ }catch(Exception e){
+ System.out.println(e);
+ }
+ }
+}
diff --git a/19-NetworkProgramming/FileTransfer.1.0/.idea/misc.xml b/19-NetworkProgramming/FileTransfer.1.0/.idea/misc.xml
new file mode 100644
index 0000000..225b430
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.0/.idea/modules.xml b/19-NetworkProgramming/FileTransfer.1.0/.idea/modules.xml
new file mode 100644
index 0000000..1775e81
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.0/.idea/uiDesigner.xml b/19-NetworkProgramming/FileTransfer.1.0/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.0/.idea/vcs.xml b/19-NetworkProgramming/FileTransfer.1.0/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.0/.idea/workspace.xml b/19-NetworkProgramming/FileTransfer.1.0/.idea/workspace.xml
new file mode 100644
index 0000000..44bb766
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/.idea/workspace.xml
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1601222328603
+
+
+ 1601222328603
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.0/Client.java b/19-NetworkProgramming/FileTransfer.1.0/Client.java
new file mode 100644
index 0000000..9fb6cf1
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/Client.java
@@ -0,0 +1,24 @@
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.net.Socket;
+
+public class Client {
+
+ public static void main(String[] args) {
+ try(Socket socket = new Socket("localhost",5000)) {
+ DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
+ DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
+
+ FileInputStream fileInputStream = new FileInputStream("path/to/File.pdf");
+ byte[] buffer = new byte[64*1024]; // socket limit
+ int bytes = fileInputStream.read(buffer,0,buffer.length);
+ dataOutputStream.write(buffer,0,bytes);
+
+ System.out.println("Bytes Sent: " + bytes);
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/19-NetworkProgramming/FileTransfer.1.0/Server.java b/19-NetworkProgramming/FileTransfer.1.0/Server.java
new file mode 100644
index 0000000..e7f05c7
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.0/Server.java
@@ -0,0 +1,28 @@
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class Server {
+
+ public static void main(String[] args) {
+ try(ServerSocket serverSocket = new ServerSocket(5000)){
+ System.out.println("listening to port:5000");
+ Socket clientSocket = serverSocket.accept();
+ System.out.println(clientSocket+" connected.");
+ DataInputStream dataInputStream = new DataInputStream(clientSocket.getInputStream());
+ DataOutputStream dataOutputStream = new DataOutputStream(clientSocket.getOutputStream());
+
+ byte[] buffer = new byte[64*1024]; // socket limit
+ int bytes = dataInputStream.read(buffer,0,buffer.length);
+ FileOutputStream fileOutputStream = new FileOutputStream("NewFile.pdf");
+ fileOutputStream.write(buffer,0,bytes);
+
+ System.out.println("Bytes Received: "+ bytes);
+
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/19-NetworkProgramming/FileTransfer.1.1/.idea/misc.xml b/19-NetworkProgramming/FileTransfer.1.1/.idea/misc.xml
new file mode 100644
index 0000000..225b430
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/.idea/modules.xml b/19-NetworkProgramming/FileTransfer.1.1/.idea/modules.xml
new file mode 100644
index 0000000..fe28baa
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/.idea/uiDesigner.xml b/19-NetworkProgramming/FileTransfer.1.1/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/.idea/vcs.xml b/19-NetworkProgramming/FileTransfer.1.1/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/.idea/workspace.xml b/19-NetworkProgramming/FileTransfer.1.1/.idea/workspace.xml
new file mode 100644
index 0000000..7ebe33f
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/.idea/workspace.xml
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1601222328603
+
+
+ 1601222328603
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/Client.java b/19-NetworkProgramming/FileTransfer.1.1/Client.java
new file mode 100644
index 0000000..ac20ef2
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/Client.java
@@ -0,0 +1,38 @@
+import java.io.*;
+import java.net.Socket;
+
+public class Client {
+ private static DataOutputStream dataOutputStream = null;
+ private static DataInputStream dataInputStream = null;
+
+ public static void main(String[] args) {
+ try(Socket socket = new Socket("localhost",5000)) {
+ dataInputStream = new DataInputStream(socket.getInputStream());
+ dataOutputStream = new DataOutputStream(socket.getOutputStream());
+
+ sendFile("path/to/File1.pdf");
+ sendFile("path/to/File2.pdf");
+
+ dataInputStream.close();
+ dataInputStream.close();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ private static void sendFile(String path) throws Exception{
+ int bytes = 0;
+ File file = new File(path);
+ FileInputStream fileInputStream = new FileInputStream(file);
+
+ // send file size
+ dataOutputStream.writeLong(file.length());
+ // break file into chunks
+ byte[] buffer = new byte[4*1024];
+ while ((bytes=fileInputStream.read(buffer))!=-1){
+ dataOutputStream.write(buffer,0,bytes);
+ dataOutputStream.flush();
+ }
+ fileInputStream.close();
+ }
+}
\ No newline at end of file
diff --git a/19-NetworkProgramming/FileTransfer.1.1/Server.java b/19-NetworkProgramming/FileTransfer.1.1/Server.java
new file mode 100644
index 0000000..566b659
--- /dev/null
+++ b/19-NetworkProgramming/FileTransfer.1.1/Server.java
@@ -0,0 +1,42 @@
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class Server {
+ private static DataOutputStream dataOutputStream = null;
+ private static DataInputStream dataInputStream = null;
+
+ public static void main(String[] args) {
+ try(ServerSocket serverSocket = new ServerSocket(5000)){
+ System.out.println("listening to port:5000");
+ Socket clientSocket = serverSocket.accept();
+ System.out.println(clientSocket+" connected.");
+ dataInputStream = new DataInputStream(clientSocket.getInputStream());
+ dataOutputStream = new DataOutputStream(clientSocket.getOutputStream());
+
+ receiveFile("NewFile1.pdf");
+ receiveFile("NewFile2.pdf");
+
+ dataInputStream.close();
+ dataOutputStream.close();
+ clientSocket.close();
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ private static void receiveFile(String fileName) throws Exception{
+ int bytes = 0;
+ FileOutputStream fileOutputStream = new FileOutputStream("media/"+fileName);
+
+ long size = dataInputStream.readLong(); // read file size
+ byte[] buffer = new byte[4*1024];
+ while (size > 0 && (bytes = dataInputStream.read(buffer, 0, (int)Math.min(buffer.length, size))) != -1) {
+ fileOutputStream.write(buffer,0,bytes);
+ size -= bytes; // read upto file size
+ }
+ fileOutputStream.close();
+ }
+}
diff --git a/19-NetworkProgramming/FileTransfer.1.1/media/placeholder b/19-NetworkProgramming/FileTransfer.1.1/media/placeholder
new file mode 100644
index 0000000..e69de29