diff --git a/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Client.java b/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Client.java new file mode 100644 index 0000000000..0d9b69412c --- /dev/null +++ b/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Client.java @@ -0,0 +1,29 @@ +package com.baeldung.socketexception.brokenpipe; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.Socket; + +public class Client { + public static void main(String[] args) { + try { + Socket socket = new Socket("localhost", 1234); + OutputStream outputStream = socket.getOutputStream(); + + outputStream.write("HELLO".getBytes()); + System.out.println("Writing to server.."); + // Simulating a delay after writing to the socket + Thread.sleep(3000); + // Writing again to the closed socket + outputStream.write("HI".getBytes()); + System.out.println("Writing to server again.."); + + System.out.println("Closing client."); + outputStream.close(); + socket.close(); + } + catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Server.java b/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Server.java new file mode 100644 index 0000000000..21c8bed638 --- /dev/null +++ b/core-java-modules/core-java-networking-4/src/main/java/com/baeldung/socketexception/brokenpipe/Server.java @@ -0,0 +1,28 @@ +package com.baeldung.socketexception.brokenpipe; + +import java.io.IOException; +import java.io.InputStream; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + public static void main(String[] args) { + try { + ServerSocket serverSocket = new ServerSocket(1234); + System.out.println("Server listening on port 1234..."); + + Socket clientSocket = serverSocket.accept(); + System.out.println("Client connected: " + clientSocket.getInetAddress()); + //Add some delay for reading from client + Thread.sleep(2000); + InputStream in = clientSocket.getInputStream(); + System.out.println("Reading from client:" + in.read()); + in.close(); + clientSocket.close(); + serverSocket.close(); + } + catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + } +}