in

Programación Java Socket (Tutorial de redes Java)

socket programming

La programación de Java Socket se utiliza para la comunicación entre las aplicaciones que se ejecutan en diferentes JRE.

La programación de Java Socket puede estar orientada a la conexión o sin conexión.

Las clases Socket y ServerSocket se utilizan para la programación de sockets orientada a la conexión y las clases DatagramSocket y DatagramPacket se utilizan para la programación de sockets sin conexión.

El cliente en la programación de sockets debe conocer dos datos:

  1. Dirección IP del servidor y
  2. Número de puerto.

Aquí, vamos a realizar una comunicación unidireccional entre el cliente y el servidor. En esta aplicación, el cliente envía un mensaje al servidor, el servidor lee el mensaje y lo imprime. Aquí, se utilizan dos clases: Socket y ServerSocket. La clase Socket se utiliza para comunicar cliente y servidor. A través de esta clase, podemos leer y escribir mensajes. La clase ServerSocket se utiliza en el lado del servidor. El método accept () de la clase ServerSocket bloquea la consola hasta que el cliente está conectado. Después de la conexión exitosa del cliente, devuelve la instancia de Socket en el lado del servidor.

Programación de sockets en Java


Clase de enchufe

Un socket es simplemente un punto final para las comunicaciones entre las máquinas. La clase Socket se puede utilizar para crear un socket.

Métodos importantes

Método Descripción
1) público InputStream getInputStream () devuelve el InputStream adjunto con este socket.
2) público OutputStream getOutputStream () devuelve el OutputStream adjunto con este socket.
3) cierre de vacío público sincronizado () cierra este enchufe

Clase ServerSocket

La clase ServerSocket se puede utilizar para crear un socket de servidor. Este objeto se utiliza para establecer comunicación con los clientes.

Métodos importantes

Método Descripción
1) aceptación de socket público () devuelve el socket y establece una conexión entre el servidor y el cliente.
2) cierre de vacío sincronizado público () cierra el socket del servidor.

Ejemplo de programación de sockets de Java

Creando servidor:

Para crear la aplicación del servidor, necesitamos crear la instancia de la clase ServerSocket. Aquí, estamos usando el número de puerto 6666 para la comunicación entre el cliente y el servidor. También puede elegir cualquier otro número de puerto. El método accept () espera al cliente. Si los clientes se conectan con el número de puerto dado, devuelve una instancia de Socket.

ServerSocket ss = nuevo ServerSocket (6666); Socket s = ss.accept (); // establece conexión y espera al cliente

Creación de cliente:

Para crear la aplicación cliente, necesitamos crear la instancia de la clase Socket. Aquí, necesitamos pasar la dirección IP o el nombre de host del servidor y un número de puerto. Aquí, estamos usando «localhost» porque nuestro servidor se ejecuta en el mismo sistema.

Socket s = new Socket («localhost», 6666);

Veamos una simple programación de sockets de Java donde el cliente envía un texto y el servidor lo recibe e imprime.

Archivo: MyServer.java

importar java.io. *; importar java.net. *; public class MyServer {public static void main (String[] args) {prueba {ServerSocket ss = new ServerSocket (6666); Socket s = ss.accept (); // establece la conexión DataInputStream dis = new DataInputStream (s.getInputStream ()); String str = (String) dis.readUTF (); System.out.println («mensaje =» + str); ss.close (); } catch (Exception e) {System.out.println (e);}}}

Archivo: MyClient.java

importar java.io. *; importar java.net. *; public class MyClient {public static void main (String[] args) {try {Socket s = new Socket («localhost», 6666); DataOutputStream dout = nuevo DataOutputStream (s.getOutputStream ()); dout.writeUTF («Hola servidor»); dout.flush (); dout.close (); s.close (); } catch (Exception e) {System.out.println (e);}}}

Para ejecutar este programa, abra dos solicitudes de comando y ejecute cada programa en cada símbolo del sistema como se muestra en la siguiente figura.

Después de ejecutar la aplicación cliente, se mostrará un mensaje en la consola del servidor.

Programación de redes Java


Ejemplo de programación de sockets de Java (lectura-escritura en ambos lados)

En este ejemplo, el cliente escribirá primero en el servidor y luego el servidor recibirá e imprimirá el texto. Luego, el servidor le escribirá al cliente y el cliente recibirá e imprimirá el texto. El paso continúa.

Archivo: MyServer.java

importar java.net. *; importar java.io. *; class MyServer {public static void main (String args[]) lanza Exception {ServerSocket ss = new ServerSocket (3333); Socket s = ss.accept (); DataInputStream din = nuevo DataInputStream (s.getInputStream ()); DataOutputStream dout = nuevo DataOutputStream (s.getOutputStream ()); BufferedReader br = new BufferedReader (nuevo InputStreamReader (System.in)); Cadena str = «», str2 = «»; while (! str.equals («detener»)) {str = din.readUTF (); System.out.println («el cliente dice:» + str); str2 = br.readLine (); dout.writeUTF (str2); dout.flush (); } din.close (); s.close (); ss.close (); }}

Archivo: MyClient.java

importar java.net. *; importar java.io. *; class MyClient {public static void main (String args[]) lanza Exception {Socket s = new Socket («localhost», 3333); DataInputStream din = nuevo DataInputStream (s.getInputStream ()); DataOutputStream dout = nuevo DataOutputStream (s.getOutputStream ()); BufferedReader br = new BufferedReader (nuevo InputStreamReader (System.in)); Cadena str = «», str2 = «»; while (! str.equals («detener»)) {str = br.readLine (); dout.writeUTF (str); dout.flush (); str2 = din.readUTF (); System.out.println («El servidor dice:» + str2); } dout.close (); s.close (); }}

Deja una respuesta

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

Función Python pow ()

unsorted array

Orden de selección de estructura de datos y algoritmos