Clase java.net.Socket en Java

La clase java.net.Socket nos permite crear objetos de socket que nos ayudan a implementar todas las operaciones de socket fundamentales. Podemos realizar varias operaciones de red como enviar, leer datos y cerrar conexiones. Cada objeto Socket que se ha creado con la clase java.net.Socket se ha asociado exactamente con 1 host remoto, para conectarse a otro host diferente, debemos crear un nuevo objeto socket.

La sintaxis para importar la clase Socket del paquete java.net:

importar java.net.Socket;

 Métodos utilizados en la clase Socket: 

Método  Descripción
bind (punto de enlace de la dirección de socket) Este método se utiliza para vincular un socket a una dirección local.
Cerca() Este método se utiliza para terminar un socket.
conectar (punto final de la dirección de socket) Este método se utiliza para conectar un socket al servidor.
obtenerCanal() Este método devuelve el objeto que está asociado con el socket, si lo hay.
getInetAddress() Este método devuelve la dirección a la que está conectado el socket.
getInputStream() Este método devuelve el flujo de entrada para el socket.
obtenerKeepAlive() Este método se usa para verificar si SO_KEEPALIVE está habilitado o no.
getLocalAddress() Este método se utiliza para obtener la dirección local a la que está vinculado el socket.
obtenerPuertoLocal() Este método devuelve la dirección local a la que está vinculado el socket.
getLocalSocketAddress() Este método devuelve el punto final al que está vinculado el socket.
getOOBInline() Este método comprueba si SO_OOBINLINE está habilitado.
getOutputStream() Este método devuelve el flujo de salida para el socket.
obtenerPuerto() Este método devuelve el número de puerto remoto con el que está asociado el socket.
 getReceiveBufferSize() Este método se utiliza para obtener el valor de la opción SO_RCVBUF para el zócalo, que es un tamaño de búfer utilizado como entrada por la plataforma en el zócalo.
getRemoteSocketAddress() Este método devuelve la dirección del extremo del socket o, si no está conectado, devuelve un valor nulo.
getReuseAddress() Este método comprueba si REUSE_ADDR está habilitado.
getSendBufferSize() Este método se usa para obtener el valor de la opción SO_SNDBUF del socket que se usa como tamaño de búfer para la salida de la plataforma en el socket.
 getSoLinger() Este método devuelve la configuración de SO_LINGER
getSoTimeout() Este método devuelve la configuración para S0_TIMEOUT
getTcpSinRetraso() Este método se usa para probar si TCP_NODELAY está habilitado o no.
getTrafficClass() Este método obtiene la clase de tráfico o el tipo de servicio en el encabezado IP de los paquetes enviados desde este Socket.
esBound() Este método devuelve el estado vinculante del socket.
está cerrado() Este método devuelve el estado cerrado del socket.
está conectado() Este método devuelve el estado de conexión del socket.
esInputShutdown() Este método devuelve si la mitad de lectura de la conexión del socket está cerrada
esSalidaCierre() Este método devuelve si la mitad de escritura de la conexión de socket está cerrada.
enviarDatosUrgentes(datos int) Este método envía un byte de datos urgentes en el socket
setKeepAlive(booleano activado) Este método habilita/deshabilita SO_KEEPALIVE
setOOBInline(booleano activado) Este método habilita/deshabilita SO_OOBINLINE (un recibo de datos urgentes de TCP). De manera predeterminada, esta opción está deshabilitada y los datos urgentes de TCP recibidos en un socket se descartan silenciosamente.
setPerformancePreferences(tiempo de conexión int, latencia int, ancho de banda int) Este método establece las preferencias de rendimiento para este socket.
 setReceiveBufferSize(tamaño int) Este método establece la opción SO_RCVBUF en el valor especificado para este Socket.
 setReuseAddress(booleano en Este método habilita/deshabilita la opción de socket SO_REUSEADDR
setSendBufferSize(tamaño int) Este método establece la opción SO_SNDBUF en el valor especificado para este Socket
setSocketImplFactory(SocketImplFactory fac Este método establece la fábrica de implementación del socket del cliente para la aplicación.
setSoLinger(boolean on, int linger) Este método activa/desactiva SO_LINGER con el tiempo de permanencia especificado en segundos.
setSoTimeout(int tiempo de espera) Este método habilita/deshabilita SO_TIMEOUT con el tiempo de espera especificado, en milisegundos.
 setTcpNoDelay(booleano en Este método activa/desactiva TCP_NODELAY (desactiva/activa el algoritmo de Nagle).
setTrafficClass(int tc) Este método establece la clase de tráfico o el octeto de tipo de servicio en el encabezado IP para los paquetes enviados desde este Socket.
 apagarEntrada() Este método coloca el flujo de entrada para este conector en el «final del flujo».
 Enstringr() Este método convierte el Socket en una string.

Aplicaciones de la clase Socket:

1. La clase de socket se implementa al crear un socket de flujo y que está conectado a un número de puerto y una dirección de puerto específicos.

Socket público (dirección InetAddress, puerto int)

2. La clase de socket se utiliza para la creación de socket y la conexión a la dirección remota especificada en el puerto remoto especificado en javax.net

   SocketFactory.createSocket(dirección InetAddress, puerto int, dirección InetAddress local, puerto local int)

3. En javax.ssl.net, la clase Socket se usa para devolver un socket en capas sobre un socket existente conectado al host con nombre en un puerto determinado.

SSLSocketFactory.createSocket(Socket s, String host, int port, boolean autoClose)

4. En javax.rmi.ssl, la clase Socket se usa para crear un socket SSL.

SslRMIClientSocketFactory.createSocket(String host, puerto int)

5. En java.nio.channels, la clase Socket se usa para recuperar un socket asociado con su canal

CanalSocket.socket()

Ejemplo de Java para la implementación de la clase Socket:

1. Para el lado del servidor:

Java

import java.io.*;
import java.net.*;
public class MyServer {
    public static void main(String[] args)
    {
        try {
            ServerSocket ss = new ServerSocket(6666);
            
            // establishes connection
            Socket soc = ss.accept();
            
            // invoking input stream
            DataInputStream dis
                = new DataInputStream(s.getInputStream());
            
            String str = (String)dis.readUTF();
            
            System.out.println("message= " + str);
            
            // closing socket
            ss.close();
            
        } // for catching Exception in run time
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

Salida en el cliente:

2. Para el lado del cliente:

Java

import java.io.*;
import java.net.*;
public class MyClient {
    public static void main(String[] args)
    {
        try {
            
            // initializing Socket
            Socket soc = new Socket("localhost", 6666);
            
            DataOutputStream d = new DataOutputStream(
                soc.getOutputStream());
            
            // message to display
            d.writeUTF("Hello GFG Readers!");         
         
            d.flush();
            
            // closing DataOutputStream
            d.close();
            
            // closing socket
            soc.close();
        }
        
        // to initialize Exception in run time
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

Salida en el servidor:

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 *