Servidor : este es el ente pasivo en la conversación.
Cliente :es el ente activo ya que inicia la conversación .
Aquí se muestra a continuación una conexión entre un Servido y un Cliente, en la cual el cliente manda un mensaje al Servidor, pero el Servidor le envía de vuelta el mismo mensaje (chat eco), pero el programa puede admitir mas Clientes siendo así un programa concurrente.
las clases que utilizamos son:
Servidor :
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
public class AplicacionServidor {
public static void main(String[] args) {
try {
ServerSocket servidor = new ServerSocket(Integer.parseInt(args[0]));
while(true){
Socket clienteConectado = servidor.accept();
BufferedReader lecturaServidor = new BufferedReader(new InputStreamReader(clienteConectado.getInputStream()));
PrintWriter escrituraServidor = new PrintWriter(clienteConectado.getOutputStream(), true);
String mensajeServidor = new String();
escrituraServidor.println("Recibido....");
try{
while ((mensajeServidor = lecturaServidor.readLine()) != null) {
System.out.println("\nMensaje recibido: \n\t" + mensajeServidor + "\n");
escrituraServidor.println(mensajeServidor);
}
clienteConectado.close();
}catch(SocketException e){
continue;
}
}
} catch (IOException ex) {
System.err.println(ex);
ex.getStackTrace();
ex.printStackTrace();
}
}
}
Cliente:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class AplicacionCliente {
public static void main(String[] args) {
try {
Socket cliente = new Socket(args[0],Integer.parseInt(args[1]));
BufferedReader lecturaCliente = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
BufferedReader lecturaTeclado = new BufferedReader(new InputStreamReader(System.in));
PrintWriter escrituraCliente = new PrintWriter(cliente.getOutputStream(), true);
String mensajeCliente =new String();
escrituraCliente.println("Hola servidor soy el cliente! :)");
while ((mensajeCliente = lecturaTeclado.readLine()) != null) {
System.out.println("\nMensaje recibido: \n\t" + mensajeCliente + "\n");
escrituraCliente.println(mensajeCliente);
}
cliente.close();
} catch (IOException ex) {
System.err.println(ex);
}
}
}