Skip to main content

Java Exception Handling MCQ Test

  Loading…

Socket (TCP & UDP) communication in Java

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 BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);


        String message = in.readLine();

        System.out.println("Client says: " + message);


        out.println("Hello from server!");


        clientSocket.close();

        serverSocket.close();

    }

}



2. Client Side:

   - The client creates a `Socket` object and connects to the server using its IP address and port number.

   - The client communicates with the server by reading from and writing to the socket's input and output streams.



import java.io.*;

import java.net.*;


public class TCPClient {

    public static void main(String[] args) throws IOException {

        Socket socket = new Socket("localhost", 12345);


        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));


        out.println("Hello from client!");


        String response = in.readLine();

        System.out.println("Server response: " + response);


        socket.close();

    }

}



UDP Socket Communication:


1. Server Side:

   - The server creates a `DatagramSocket` object to send and receive datagrams (packets) over the network.

   - The server listens for incoming datagrams on a specific port.

   - The server processes incoming datagrams and sends response datagrams if necessary.



import java.io.*;

import java.net.*;


public class UDPServer {

    public static void main(String[] args) throws IOException {

        DatagramSocket serverSocket = new DatagramSocket(12345);

        byte[] receiveData = new byte[1024];

        byte[] sendData;


        System.out.println("Server started. Waiting for client...");


        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

        serverSocket.receive(receivePacket);


        String message = new String(receivePacket.getData()).trim();

        System.out.println("Client says: " + message);


        InetAddress clientAddress = receivePacket.getAddress();

        int clientPort = receivePacket.getPort();

        sendData = "Hello from server!".getBytes();

        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);

        serverSocket.send(sendPacket);


        serverSocket.close();

    }

}



2. Client Side:

   - The client creates a `DatagramSocket` object to send and receive datagrams.

   - The client sends datagrams to the server's IP address and port number.

   - The client receives response datagrams from the server.



import java.io.*;

import java.net.*;


public class UDPClient {

    public static void main(String[] args) throws IOException {

        DatagramSocket clientSocket = new DatagramSocket();


        InetAddress serverAddress = InetAddress.getByName("localhost");

        int serverPort = 12345;


        byte[] sendData = "Hello from client!".getBytes();

        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);

        clientSocket.send(sendPacket);


        byte[] receiveData = new byte[1024];

        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

        clientSocket.receive(receivePacket);


        String response = new String(receivePacket.getData()).trim();

        System.out.println("Server response: " + response);


        clientSocket.close();

    }

}



 Conclusion:

Socket communication in Java allows for the exchange of data between two endpoints over a network. TCP sockets provide reliable, connection-oriented communication, while UDP sockets offer lightweight, connectionless communication. Understanding socket programming is essential for developing networked applications in Java.

Comments

Popular posts from this blog

Passing and Returning Objects in Java Methods

Passing and Returning Objects in Java Methods In Java, objects can be passed as parameters to methods and returned from methods just like other primitive data types. This allows for flexibility and the manipulation of object state within methods. Let's explore how passing and returning objects work in Java. Passing Objects as Parameters When you pass an object as a parameter to a method, you are essentially passing a reference to that object. This means that changes made to the object inside the method will affect the original object outside the method.  Example: class Car {     String model;     Car(String model) {         this.model = model;     } } public class CarProcessor {     // Method to modify the Car object     static void modifyCar(Car car, String newModel) {         car.model = newModel;     }     public static void main(String[] args) {       ...

Understanding Constructors in Java: A Simple Guide with Examples and Analogies

  What is a Constructor in Java? In Java, a constructor is a special type of method that is used to initialize objects. When you create an object of a class, the constructor is called automatically. Its main job is to set the initial values of the object’s properties or perform any setup that the object needs before it can be used. Why Do We Need Constructors? You need constructors because: Initialization : Constructors are responsible for initializing an object when it is created. Automatic Execution : A constructor is automatically called when an object is created, so you don’t have to manually initialize every property. Simplifying Object Creation : It simplifies object creation by providing default values or custom initialization. Where Do Constructors Fit in Java? Constructors fit within a class. They are used whenever a new object of that class is created, and they allow the object to be initialized. Constructors must have the same name as the class, and they don't have a re...