From d3e34db45a7c85f43d2a5a5e911399030047f567 Mon Sep 17 00:00:00 2001 From: NearLawiet Date: Thu, 1 Oct 2020 20:43:52 +0530 Subject: [PATCH 1/4] TCP Client-Server Program --- 19-NetworkProgramming/Echo-TCP/.idea/misc.xml | 9 ++ .../Echo-TCP/.idea/modules.xml | 8 ++ 19-NetworkProgramming/Echo-TCP/.idea/vcs.xml | 6 + .../Echo-TCP/.idea/workspace.xml | 135 ++++++++++++++++++ 19-NetworkProgramming/Echo-TCP/Client.java | 31 ++++ 19-NetworkProgramming/Echo-TCP/Server.java | 28 ++++ 6 files changed, 217 insertions(+) create mode 100644 19-NetworkProgramming/Echo-TCP/.idea/misc.xml create mode 100644 19-NetworkProgramming/Echo-TCP/.idea/modules.xml create mode 100644 19-NetworkProgramming/Echo-TCP/.idea/vcs.xml create mode 100644 19-NetworkProgramming/Echo-TCP/.idea/workspace.xml create mode 100644 19-NetworkProgramming/Echo-TCP/Client.java create mode 100644 19-NetworkProgramming/Echo-TCP/Server.java 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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); + } + } +} From bb50c4ce5e17f805da37731d477a83e1a0b63bef Mon Sep 17 00:00:00 2001 From: NearLawiet Date: Thu, 1 Oct 2020 20:45:09 +0530 Subject: [PATCH 3/4] single file transfer over sockets (less than 64kbs) --- .../FileTransfer.1.0/.idea/misc.xml | 9 + .../FileTransfer.1.0/.idea/modules.xml | 8 + .../FileTransfer.1.0/.idea/uiDesigner.xml | 124 ++++++++++++++ .../FileTransfer.1.0/.idea/vcs.xml | 6 + .../FileTransfer.1.0/.idea/workspace.xml | 154 ++++++++++++++++++ .../FileTransfer.1.0/Client.java | 24 +++ .../FileTransfer.1.0/Server.java | 28 ++++ 7 files changed, 353 insertions(+) create mode 100644 19-NetworkProgramming/FileTransfer.1.0/.idea/misc.xml create mode 100644 19-NetworkProgramming/FileTransfer.1.0/.idea/modules.xml create mode 100644 19-NetworkProgramming/FileTransfer.1.0/.idea/uiDesigner.xml create mode 100644 19-NetworkProgramming/FileTransfer.1.0/.idea/vcs.xml create mode 100644 19-NetworkProgramming/FileTransfer.1.0/.idea/workspace.xml create mode 100644 19-NetworkProgramming/FileTransfer.1.0/Client.java create mode 100644 19-NetworkProgramming/FileTransfer.1.0/Server.java 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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