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:
- En el canal java.nio, la clase ServerSocket se usa para recuperar un serverSocket asociado con este canal.
- 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).
- 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