<Fecha y hora recibidas tal cual se recibieron del servidor de hora>. Yo para ello he hecho un bucle for que analice el mensaje recibido del servidor para poder contar el numero de caracteres, los espacios y mostrarlos por pantalla), es la primera vez que trato con sockets y muchas veces no se si lo estoy haciendo bien o no .
SERVIDOR:
Código:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class ServidorDiaHora {
@SuppressWarnings({ "resource", "unused" })
public static void main(String[] args) throws IOException {
ServerSocket servidor = null;
Socket sc = null;
final int PUERTO = 5000;
final String HOST="127.0.0.1"; //INDICO A QUIEN ME VOY A CONECTAR
DataInputStream in;
DataOutputStream out;
servidor = new ServerSocket(PUERTO);
//- Cuando se inicia el Socket Servidor:
//El servidor de DayTime ha arrancado: ServerSocket[ addr=<dirección>,localport=<número puerto local>]
System.out.println("El servidor de DayTime ha arrancado" ); //El servidor siempre estará atento a escuchas peticiones de los clientes
while(true) {
sc = servidor.accept();
//Cliente conectado desde <host> al puerto <número puerto local> desde el puerto <número puerto
//cliente>
System.out.println("Cliente conectado");//Aviso cliente conectado
//Creamos puentes de comunicacion
in = new DataInputStream(sc.getInputStream()); //inputStream(LEE): cliente -> servidor
out= new DataOutputStream(sc.getOutputStream()); //outputStream(ESCRIBE): servidor -> cliente
//Esto me servirá para enviar la fecha y la hora
Date fechaHoraActuales = new Date();
out.writeUTF("Fecha y Hora enviadas: "+ fechaHoraActuales); //Yo le escribo un mensaje
sc.close();//Cerramos el cliente.
System.out.println("Cliente desconectado");//Aviso de que esta desconectado
}
}
}
CLIENTE:
Código:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
public class CienteDiaHora {
public static void main(String[] args) throws IOException {
final String HOST="127.0.0.1"; //INDICO A QUIEN ME VOY A CONECTAR
final int PUERTO=5000;//Pongo el puerto que puse en el servidor
//Clases necesarias
DataInputStream in;
//Cuando el cliente conecta exitosamente al servidor:
//Cliente TCP conectado a <nombre host> en el puerto <número puerto>
Socket sc = new Socket(HOST, PUERTO); //A esta clase socket le pasamos el HOST y el PUERTO
System.out.println("Cliente TCP conectado a: "+HOST+" en el puerto: "+PUERTO);
//Creamos puentes de comunicacion
in = new DataInputStream(sc.getInputStream()); //inputStream(LEE): cliente -> servidor
String mensaje = in.readUTF(); //leemos el mensaje
System.out.println(mensaje);
//Esto me servirá para contar los caracteres, los espacios
String mayus="";
String minus="";
String numeros="";
String letras="";
int n_mayus=0;
int n_minus=0;
int n_numeros=0;
int n_letras=0;
int n_espacios=0;
for(int i=0; i<mensaje.length();i++) {
if(Character.isLetter(mensaje.charAt(i))) {
n_letras++;
letras+=mensaje.charAt(i)+" * ";
}
if(Character.isUpperCase(mensaje.charAt(i))) {
n_mayus++;
mayus+=mensaje.charAt(i)+" * ";
}
if(Character.isLowerCase(mensaje.charAt(i))) {
n_minus++;
minus+=mensaje.charAt(i)+" * ";
}
if(Character.isDigit(mensaje.charAt(i))) {
n_numeros++;
numeros+=mensaje.charAt(i)+" * ";
}
if(Character.isSpaceChar(mensaje.charAt(i))) {
n_espacios++;
}
}
System.out.println("Mensaje recibido: "+mensaje);
System.out.println("Mayusculas("+n_mayus+"): "+mayus);
System.out.println("Minusculas("+n_minus+"): "+minus);
System.out.println("Numeros("+n_numeros+"): "+numeros);
System.out.println("Letras("+n_letras+"): "+letras);
System.out.println("Espacios: "+n_espacios);
//- Una vez ha recibido la información del servidor:
//Se han recibido <número de caracteres, incluidos espacios y saltos de línea> bytes
//<Fecha y hora recibidas tal cual se recibieron del servidor de hora>
sc.close();
}
}