Ejemplo de Java - Ejemplo de comunicación ServerSocket y Socket
El siguiente ejemplo demuestra cómo implementar que el cliente envíe un mensaje al servidor, el servidor reciba el mensaje y lo lea, luego lo escriba al cliente, y el cliente reciba la salida.
1. Crear el servidor
- El servidor crea un ServerSocket para la comunicación
- El servidor crea un Socket para aceptar la conexión del cliente
- Crear un flujo de entrada IO para leer los datos enviados por el cliente
- Crear un flujo de salida IO para enviar mensajes de datos al cliente
Código del servidor:
Archivo Server.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("Iniciando el servidor....");
Socket s = ss.accept();
System.out.println("Cliente:"+s.getInetAddress().getLocalHost()+"Conectado al servidor");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//Leyendo los mensajes enviados por el cliente
String mess = br.readLine();
System.out.println("Cliente:"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
El resultado de ejecutar el código anterior es:
Iniciando servidor....
2. Crear el cliente
- Crear la comunicación Socket, establecer la IP y el puerto del servidor de comunicación
- Crear un flujo de salida IO para enviar mensajes de datos al servidor
- Crear un flujo de entrada IO para leer los mensajes de datos enviados por el servidor
Código del cliente:
Archivo Client.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8888);
//Construir IO
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//Enviar un mensaje al servidor
bw.write("Probar la comunicación entre el cliente y el servidor; el servidor recibe el mensaje y lo devuelve al cliente\n");
bw.flush();
//Leer el mensaje devuelto por el servidor
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("Servidor:"+mess);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
El resultado de ejecutar el código anterior es:
Servidor: Prueba de comunicación entre cliente y servidor; el servidor recibe el mensaje y lo devuelve al cliente.Otras extensiones