Socket communication in Java enables communication between two endpoints over a network. There are two main types of sockets: TCP sockets and UDP sockets. Let's explain both types with examples: TCP Socket Communication: 1. **Server Side**: - The server creates a `ServerSocket` object to listen for incoming connections on a specific port. - When a client connects, the server accepts the connection and creates a `Socket` object to communicate with the client. - The server reads from and writes to the socket's input and output streams to communicate with the client. import java.io.*; import java.net.*; public class TCPServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(12345); System.out.println("Server started. Waiting for client..."); Socket clientSocket = serverSocket.accept(); System.out.println("Client connected."); BufferedReader in = new Bu
In Java, when dealing with multilevel inheritance and constructors, the `super` keyword plays a crucial role. The `super` keyword is used to call the constructor of the immediate superclass from within the subclass constructor. This is essential for initializing the inherited members of the superclass before initializing the members of the subclass. Let's illustrate how `super` keyword is used to handle multilevel constructors: class Animal { String type; Animal(String type) { this.type = type; System.out.println("Animal constructor called"); } void eat() { System.out.println("Animal is eating"); } } class Dog extends Animal { String breed; Dog(String type, String breed) { super(type); // Calling superclass constructor this.breed = breed; System.out.println("Dog constructor called"); } void bark() { System.out.println("Dog is barking"); } } class L