×

Types of Sockets in Java

The fundamental idea behind Java's networking capability is the socket. Early in the 1980s, the Berkeley UNIX 4.2BSD version included the socket paradigm. Berkeley socket is the term employed as a result. The socket is the foundation of a contemporary network since it enables a single computer several clients at once and provide various types of data. And to do that, a port - an identified socket on a particular machine - is used. It is stated that the server process "listens" to a port. up until the client establishes a connection with the server. Multiple clients may connect to the same port on the server, but only one client may be active at a time. A multi-threaded server process is necessary to manage several client connections.

Protocol is used to establish socket connections. A low-level routing protocol called Internet Protocol (IP) divides data into individual packets and sends them over the network to a specific address. However, there is no assurance that the packets will arrive at their destination as a result of this. Another higher-level protocol called Transmission Control Protocol (TCP) is able to link together these packets robustly and sort and retransmit them as necessary for a reliable data transmission. User Datagram Protocol (UDP), a third protocol, can be immediately applied to provide quick, unreliable, offline packet transfers.

The higher-level protocol that follows connection establishment depends on the port you are using. The first 1,024 ports are reserved for TCP/IP for some protocols. And many of these may sound extremely familiar to you if you've been using the Internet for a while. Telnet uses port number 23, FTP uses port 21, whose uses port 43, email uses port 25, HTTP uses port 80, finger uses port 79, netnews uses port 119, and so on. Each protocol specifies the manner in which the client should communicate with the port.

Types of Sockets in Java

The following three socket types are supported by Java:

  1. Stream Sockets
  2. Datagram Sockets
  3. Raw Sockets

Stream Sockets

Using TCP, processes can communicate thanks to Stream Sockets. A dependable, two-way, unrepeated, sequential stream of data without record boundaries is offered by stream sockets. The socket is connection-oriented. These sockets allow for the reading and writing of data as streams of bytes once a connection has been made. SOCK STREAM is the socket type.

When a secure connection is required for two network programmes sending and receiving numerous messages, stream sockets are employed. TCP is used by stream sockets to guarantee error-free delivery of messages to their destinations. In reality, IP packets are frequently misdirected or lost in the network. In either case, the IP packet is resent by the receiving TCP after connecting to the issuing TCP. Each stream socket has two are now connected securely as a result of this.

  The client/server applications require the use of stream sockets. The client programme tries to build a stream socket object containing the host IP address of a server programme, the server program's port number (i.e., a network-aware application that needs access to a service) (that is, a network-aware programme that provides a service to client programs). The network management software on the client host receives the IP address and port number from the stream socket initialization code in the client programme.

This software uses IP to provide the server host's IP address and port number via NIC. In an effort to confirm that the server programme is accepting the stream socket's connection requests on the designated port, network management software at the server host tries to retrieve data (via IP) from the NIC. If the server programme is listening, the network management software on the host server will react to the network management software on the client host with a positive acknowledgement.

The server program's stream socket receives the client program's stream socket initialization code, establishes a port number for the client programme, passes the port number to the stream socket of the server application, which utilises that number to distinguish the client.

The stream socket initialization code for the client application responds by throwing an exception object and failing to open a channel of communication (It does not produce an object for a stream socket.)

TCP/IP Client Sockets

To build dependable streaming connections that are two-way, persistent, and point-to-point between hosts on the Internet, TCP/IP sockets are employed. Sockets can be used by the Java I/O system to connect to other programmes running locally or on remote systems connected to the Internet. It's crucial to remember that the applet creates a unidirectional socket connection with the host on which it is loaded. Because it is risky for applets loaded access arbitrary systems via a firewall, this restriction is in place. In Java, there are two different TCP socket types.

One is for the client, the other is for the server. When a client connects, the ServerSocket class acts as a "listener" and does nothing else. ServerSocket is therefore for servers. For clients, there is the Socket class. It's intended to establish a connection with launch from a server socket a protocol exchange. This is due to the fact that Java applications most frequently employ client sockets. connecting the client and server is automatically established when a Socket object is created. No function Object() { [native code] } or method explicitly exposes information about how to set up this connection.

The two constructors that are used to build a client socket are as follows:

  1. IOException is thrown by Socket(InetAddress, ipAddress, int port): Uses a port and an existing InetAddress object to create a socket.
  2. UnknownHostException, IOException are thrown by the function socket(String hostName, int port),: which creates a socket connected to the supplied host and port.

Different instance methods are defined by socket. A socket can always use the techniques listed below to lookup associated address and port information.

  1. int getPort(): It gives back the remote port that the invoked Socket object is attached to. In the absence of a connected socket, it returns 0.
  2. int getLocalPort(): the local port that the calling Socket object is linked to is returned. If the socket is unbound, it gives back -1.
  3. InetAddress getInetAddress(): It gives back the InetAddress connected to the Socket object. In the absence of a connected socket, it returns null.
  4. InputStream getInputStream() throws IOException: Gets the InputStream connected to the socket that is invoking the command.
  5. OutputStream getOutputStream( ) throws IOException: gives back the OutputStream connected to the calling socket.
  6. connect( ): allows for the specification of a new connection
  7. isConnected( ): If a server connection is present, the function returns true.
  8. isBound( ): if the socket is connected to an address, it returns true.
  9. isClosed( ): If the socket is shut, the function returns true.

A straightforward socket example is provided by the programme below. opens a connection to the InterNIC server's "whois" port (port 43), gives a command-line input to the socket, then publishes the results. The InterNIC will attempt to locate the dispute using the Internet domain name that is registered before returning the IP address and contact details for that website.

import java.net.*;  
import java.io.*;  
public class WhoisClient {  
    public static void main(String[] args) {  
        if (args.length < 1)   
        return;  
        String domainName = args[0];  
        String hostname = "whois.internic.net";  
        int port = 43;   
        try (Socket socket = new Socket(hostname, port)) {  
            OutputStream output = socket.getOutputStream();  
            PrintWriter writer = new PrintWriter(output, true);              
            writer.println(domainName);  
            InputStream input = socket.getInputStream();  
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));  
            String line;  
            while ((line = reader.readLine()) != null) {  
                System.out.println(line);  
            }  
        }   
        catch (UnknownHostException ex) 
{  
             System.out.println("Server not found: " + ex.getMessage());  
         }   
        catch (IOException ex) {  
             System.out.println("I/O error: " + ex.getMessage());  
        }  
    }  
}  
Expected Output: 
WhoisClient

The programme operates as follows. To begin, the socket is built with the host name "internic.net" and port number 43, which is a website that responds to port 43 whois requests. Additionally, the socket opens up for both streams, both input and output.The string that comprises the name of the website from which we wish to obtain information is then created. The outcome is displayed once through socket input, the response is read.

Datagram Sockets

Datagram sockets let processes communicate using UDP. Bidirectional message flow is supported using datagram sockets. It is a socket without a connection. It is possible for a datagram socket process to receive duplicate messages as well as messages in a different order from the one in which they were transmitted. The data's record boundaries are still present. SOCK DGRAM is the socket type.

The majority of networking requirements can be met by TCP/IP-style networking. It offers a stream of packet data that is serialised, predictable, and trustworthy. But there is a price to this. TCP uses numerous cutting-edge algorithms to handle congestion control on congested networks and to prepare for the worst-case scenario of packet loss. This results in a fairly ineffective method of data transportation. Datagrams offer a different option.

Large volumes of information are sent between machines called datagrams. There is no assurance that the datagram will arrive or perhaps that someone will be there to grab it once it has been released for its intended use. Similar to this, there is no assurance that the datagram was not harmed in transit or that the sender is still present to receive a response when it is received.

Java uses two classes to construct Adding datagrams to the UDP protocol: the DatagramPacket object serves as the data container and the DatagramSocket provides the means of sending or receiving datagram packets.

Four public constructors are defined by DatagramSocket. Here are a few of them:

  • Creates a Datagram socket linked to any open port on the local machine, however DatagramSocket() produces SocketException instead.
  • (int Port) DatagramSocket throws A DatagramSocket is created with the SocketException exception and is bound to the port given by the port.
  • DatagramSocket(int port, InetAddress ipAddress), which constructs a DatagramSocket bound to the supplied port and InetAddress, throws a SocketException.
  • Constructs a DatagramSocket bound to the supplied SocketAddress. DatagramSocket(SocketAddress address) throws SocketException. The concrete class InetSocketAddress implements the abstract class SocketAddress. In InetSocketAddress, an IP address and port number are combined. If a problem arises during the socket creation process, any user may throw a SocketException.

Many methods are defined by DatagramSocket. Here, the functions send() and receive()—two of the most crucial—are displayed:

  • IOException is thrown by the void send() method, which sends the packet to the port indicated by the DatagramPacket packet.
  • The function void receive(DatagramPacket packet) throws an IOException and waits for a packet to be received from the port that the packet specifies before returning the outcome.

You can access additional methods that provide you access to different DatagramSocket characteristics.

Here are several examples:

  • InetAddress getInetAddress(): The address is returned if the socket is established. If not, null is returned.
  • int getLocalPort() of type returns the local port's number.
  • Gets the port number that the socket is connected to using the int getPort() method. If the socket is not connected to a port, it returns -1.
  • The function isBound(), which returns true if the socket is bound to an address, checks this. Otherwise, it returns false.
  • If the socket is linked to a server, the boolean isConnected() function will return true. Alternatively, it returns false.
  • sets void It throws SoTimeout(int millis). The time-out period is set to the amount of milliseconds that have elapsed in millis due to the SocketException.

Datagram Packet

Multiple constructors are defined by DatagramPacket. Here are four of them:

  • DatagramPacket(byte data[], int size]) specifies the size of a packet as well as a buffer that will accept the data. It is employed for DatagramSocket data reception.
  • We can define an offset within the buffer at which data will be put using DatagramPacket(byte data[], int offset, and int size).
  • It specifies a destination address and port that a DatagramSocket will use to decide where the data in the packet will be transmitted. DatagramPacket(byte data[], int size, InetAddress ipAddress, int port)
  • Transmits packets starting at the provided offset into the data using the following syntax: DatagramPacket(byte data[], int offset, int size, InetAddress ipAddress, int port).

Raw Sockets

Access to ICMP (Internet Control Message Protocol) is made possible using raw sockets. The exact nature of these sockets, which are often datagram-oriented, depends on the protocol's given interface. Most applications do not suit raw sockets. It is offered to aid in the creation to gain more information about new communication protocols intricate parts of protocols already in use. Raw sockets can only be used by root processes. The type of socket is SOCK RAW.

The address is the primary component of the Internet. On the Internet, each computing gadget has a personal one. Each Internet-connected computer has a specific identification number called an Internet address. At first, every Internet address was a 32-bit value, or four 8-bit values. This kind of address is defined by IPv4 (Internet Protocol, version 4). However, IPv6 (Internet Protocol, version 6) is a new address scheme that has already been implemented.


Related Topics

Java calculate age

In this section, we will create a Java program that calculates age from the given date of birth or current date. In order to get the date of birth from the current...

6 minutes read.

Dining Philosophers problem in Java

The Problem of the Dining Philosophers illustrates a concurrency issue involving the distribution of scarce resources among conflicting processes. Problem Statement Imagine a dining table with a circle in the middle and five...

3 minutes read.

Java Class Syntax

A class is a fundamental building piece in object-oriented programming. It can be characterised as a template that outlines the information and actions connected to the creation of a class....

3 minutes read.

Java Integer equals() method

The equals() method of Integer class compares the given object to the specified object. Syntax public boolean equals(Object obj) Parameters The parameter ‘obj’ represents the object to be compared with. Overrides The equals() method overrides equals...

1 minute read.

How to Create an Object in Java

How to Create an Object in Java An object can be defined as a run time entity that contains the blue printof the class. It means that all the member functions...

5 minutes read.

How to encrypt password in Java

Every software program needs a username and password to identify a legitimate user. A username can be any number of things, including an email address or a string of characters....

6 minutes read.

Instanceof operator in Java

To determine whether an object is an instance of the supplied type in Java, use the instanceof operator (class or subclass or interface). Because it compares the instance with type, the...

3 minutes read.

Java HashSet

HashSet implements the set interface. It uses the hash table to make the collection to store different data types. The hash set is the unordered collection of different data types....

6 minutes read.

Java Boyer Moore

A string searching or matching technique called the Boyer-Moore algorithm was created in 1977 by Robert S. Boyer and J. Strother Moore. It is the most popular and effective string-matching...

9 minutes read.

Java Boolean getBoolean() Method

The getBoolean() method of Java Boolean class returns true if the specified system property is not null and is equal to the String ‘true’, else the result returned is false. Syntax public...

1 minute read.

Java Externalization

What is Externalization in Java? Externalization is a concept that is advanced to serialization. Serialization is a concept where we can transfer an object from our JVM ( Java virtual machine...

3 minutes read.

File Operation in Java

In Java, a file is an Abstract data type. These are used to store the data which is related. Files are named storage locations. With a file we can perform...

7 minutes read.

Pancake Sorting in Java

In the pancake sorting method, the array must be sorted using just one operation, which is: Flip the arrays arr at index 0 to index j by using flipArr(arr, h). Other sorting...

3 minutes read.

Chromatic Number in Java

The chromatic number is the bare minimum of colours necessary to accurately colour any graph. To put it another way, the chromatic number can be thought of as the bare...

6 minutes read.

Java gc()

Garbage collection Java language provides different ways to perform the task of memory management. In Java, objects are declared and assigned references. Once lifeof an object is completed it is dereferenced...

4 minutes read.

Untouchable Number in Java

If a number N cannot be divided properly by any positive number, it is said to be an untouchable number. Additionally known as nonaliquot numbers. The sequence is A005114 from...

3 minutes read.

Bottom view of a binary tree in Java

The lowest nodes in their horizontal distance are present and referred to as the bottom view of a binary tree. The horizontal distance between the nodes of a binary tree...

4 minutes read.

How to uninstall the Java in Ubuntu

We need java on our computers in our daily lives because there are lots of different applications that are developed using the java environment, so we have to install java...

4 minutes read.

Exception Handling Program in Java

Exception Handling Program in Java Exception means something that is abnormal. In Java, an exception is treated as a problem that disrupts the normal flow of the program. An exception leads...

7 minutes read.

Java Read File

Java provides its users with many ways of reading a file. To read a text file, you can use a FileReader, BufferedReader, or Scanner. Each utility offers something special for...

6 minutes read.