Clase java.net.ServerSocket en Java

ServerSocket Class se utiliza para proporcionar una implementación independiente del sistema del lado del servidor de una conexión de socket cliente/servidor. El constructor de ServerSocket genera una excepción si no puede escuchar en el puerto especificado (por ejemplo, el puerto ya se está utilizando).

Es ampliamente utilizado para las aplicaciones de la clase java.net.ServerSocket, que es la siguiente:

  1. En el canal java.nio, la clase ServerSocket se usa para recuperar un serverSocket asociado con este canal.
  2. En java.rmi.Server, la clase ServerSocket se usa para crear un socket de servidor en el puerto especificado (el puerto 0 indica un puerto anónimo).
  3. En javax.net, el socket del servidor se usa ampliamente para:
    • devolver un socket de servidor no vinculado.
    • devolver un socket de servidor vinculado al puerto especificado.
    • devuelve un socket de servidor vinculado al puerto especificado y utiliza la acumulación de conexión especificada.
    • devolver un socket de servidor vinculado al puerto especificado, con un registro de escucha especificado y una IP local.

Veamos los métodos de esta clase, que son los siguientes:

Método Descripción
aceptar() Escucha la conexión que se realizará con este socket y la acepta.
bind (punto final de la dirección de socket) Vincula el ServerSocket a una dirección específica (dirección IP y número de puerto).
 bind (punto final de SocketAddress, trabajo pendiente int) Vincula el ServerSocket a una dirección específica (dirección IP y número de puerto).
cerca() Cierra este enchufe
obtenerCanal() Devuelve el objeto ServerSocketChannel único asociado con este socket, si lo hay.
getInetAddress() Devuelve la dirección local de este socket de servidor.
obtenerPuertoLocal() Devuelve el número de puerto en el que está escuchando este socket.
 getLocalSocketAddress() Devuelve la dirección del punto final al que está vinculado este socket, o nulo si aún no está vinculado.
getReceiveBufferSize() Obtiene el valor de la opción SO_RCVBUF para este ServerSocket, que es el tamaño de búfer propuesto que se usará para los sockets aceptados de este ServerSocket.
getReuseAddress() Prueba si SO_REUSEADDR está habilitado.
getSoTimeout() Recuperar configuración para SO_TIMEOUT.
implAccept(Socket s) Las subclases de ServerSocket usan este método para anular accept() para devolver su propia subclase del socket .
 esBound() Devuelve el estado de enlace del ServerSocket.
 está cerrado() Devuelve el estado cerrado del ServerSocket.
setPerformancePreferences(tiempo de conexión int, latencia int, ancho de banda int) Establece las preferencias de rendimiento para este ServerSocket
Establece las preferencias de rendimiento para este ServerSocket Establece un valor propuesto predeterminado para la opción SO_RCVBUF para los sockets aceptados desde este ServerSocket.
setReuseAddress(booleano activado) Habilita/deshabilita la opción de socket SO_REUSEADDR.
setSocketFactory(SocketImplFactory fac) Establece la fábrica de implementación del socket del servidor para la aplicación.
setSoTimeout(int tiempo de espera) Habilitar/deshabilitar SO_TIMEOUT con el tiempo de espera especificado, en milisegundos.
Enstringr() Devuelve la dirección de implementación y el puerto de implementación de este socket como una string.

implementación:

Ejemplo 1 del lado del servidor

Java

// Java Program to implement ServerSocket class
// Server Side
 
// Importing required libraries
import java.io.*;
import java.net.*;
 
// Main class
public class MyServer {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Try block to check for exceptions
        try {
 
            // Creating an object of ServerSocket class
            // in the main() method  for socket connection
            ServerSocket ss = new ServerSocket(6666);
 
            // Establishing a connection
            Socket soc = ss.accept();
 
            // Invoking input stream via getInputStream()
            // method by creating DataInputStream class
            // object
            DataInputStream dis
                = new DataInputStream(soc.getInputStream());
 
            String str = (String)dis.readUTF();
 
            // Display the string on the console
            System.out.println("message= " + str);
 
            // Lastly close the socket using standard close
            // method to release memory resources
            ss.close();
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // Display the exception on the console
            System.out.println(e);
        }
    }
}

Producción:

Ejemplo 2 del lado del cliente 

Java

// Java Program to implement ServerSocket class
// Client - side
 
// Importing required libraries
import java.io.*;
import java.net.*;
 
// Main class
public class MyClient {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Try block to check if exception occurs
        try {
 
            // Creating Socket class object and
            // initializing Socket
            Socket soc = new Socket("localhost", 6666);
 
            DataOutputStream d = new DataOutputStream(
                soc.getOutputStream());
 
            // Message to be displayed
            d.writeUTF("Hello GFG Readers!");
 
            // Flushing out internal buffers,
            // optimizing for better performance
            d.flush();
 
            // Closing the connections
 
            // Closing DataOutputStream
            d.close();
            // Closing socket
            soc.close();
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print the exception on the console
            System.out.println(e);
        }
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por ravi.geek24 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *