elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  SOCKETS SERVIDOR AYUDA PORFAVOR!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: SOCKETS SERVIDOR AYUDA PORFAVOR!!  (Leído 2,815 veces)
Pitagoras

Desconectado Desconectado

Mensajes: 29


Ver Perfil
SOCKETS SERVIDOR AYUDA PORFAVOR!!
« en: 3 Mayo 2022, 12:55 pm »

Buenas tengo una duda y es que en un ejercicio a realizar con Sockets se me pide que el Servidor le envíe al Cliente la fecha y la hora actuales, lo he hecho pero me da fallos a la hora de ejecutar el servidor y no se porque, a continuacion paso el codigo del servidor y del cliente(es el que recibe la fecha y hora del servidor y debe de mostrar la siguiente informacion: 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>. 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();

}

}



En línea

Pitagoras

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: SOCKETS SERVIDOR AYUDA PORFAVOR!!
« Respuesta #1 en: 5 Mayo 2022, 17:13 pm »

Porfavor si alguien me puede ayudar!!


En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: SOCKETS SERVIDOR AYUDA PORFAVOR!!
« Respuesta #2 en: 7 Mayo 2022, 19:15 pm »

El código que has puesto funciona.

He ejecutado el Servidor 1 vez y el Cliente 2 veces (la segunda tras haber terminado la primera) y estos son los resultados de la ejecución:

Del lado del Servidor:
Código:
El servidor de DayTime ha arrancado
Cliente conectado
Cliente desconectado
Cliente conectado
Cliente desconectado

Del lado del Cliente:
Código:
Cliente TCP conectado a: 127.0.0.1 en el puerto: 5000
Fecha y Hora enviadas: Sat May 07 19:09:11 CEST 2022
Mensaje recibido: Fecha y Hora enviadas: Sat May 07 19:09:11 CEST 2022
Mayusculas(8): F * H * S * M * C * E * S * T *
Minusculas(20): e * c * h * a * y * o * r * a * e * n * v * i * a * d * a * s * a * t * a * y *
Numeros(12): 0 * 7 * 1 * 9 * 0 * 9 * 1 * 1 * 2 * 0 * 2 * 2 *
Letras(28): F * e * c * h * a * y * H * o * r * a * e * n * v * i * a * d * a * s * S * a * t * M * a * y * C * E * S * T *
Espacios: 9

Cliente TCP conectado a: 127.0.0.1 en el puerto: 5000
Fecha y Hora enviadas: Sat May 07 19:09:12 CEST 2022
Mensaje recibido: Fecha y Hora enviadas: Sat May 07 19:09:12 CEST 2022
Mayusculas(8): F * H * S * M * C * E * S * T *
Minusculas(20): e * c * h * a * y * o * r * a * e * n * v * i * a * d * a * s * a * t * a * y *
Numeros(12): 0 * 7 * 1 * 9 * 0 * 9 * 1 * 2 * 2 * 0 * 2 * 2 *
Letras(28): F * e * c * h * a * y * H * o * r * a * e * n * v * i * a * d * a * s * S * a * t * M * a * y * C * E * S * T *
Espacios: 9

Si te sigue dando problemas, adjunta el error concreto que te produce y qué situación lo produce (pasos que sigues para que aparezca).
PD: Te puede estar dando un error (ConnectException) si ejecutas el Cliente antes que el Servidor. Eso es normal y es porque el Cliente no puede conectarse si el Servidor no está levantado.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON SOCKETS (CLIENTE/SERVIDOR)
Programación C/C++
ApOkAlizE 4 4,671 Último mensaje 29 Febrero 2012, 22:56 pm
por avmiitxe
Servidor de sockets en c
Programación C/C++
xGisKaRDx 7 3,805 Último mensaje 18 Julio 2014, 18:04 pm
por xGisKaRDx
C # - Cliente-Servidor, Sockets AYUDA!
Programación C/C++
LoreleyGzz 1 1,992 Último mensaje 3 Diciembre 2015, 15:50 pm
por DarK_FirefoX
[Sockets] Cliente - servidor
Java
LaThortilla (Effort) 3 2,908 Último mensaje 4 Julio 2016, 06:26 am
por hectornunezrivas
SOCKETS AYUDA URGENTE PORFAVOR!!!!
Java
Pitagoras 4 3,468 Último mensaje 9 Mayo 2022, 12:10 pm
por Pitagoras
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines