Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JordyVP

#1
Java / Temas sobre sockets
8 Marzo 2021, 13:57 PM
 hola comunidad programadora soy nuevo en este sitio ,mi nombre es Jordy mucho gusto, estoy aquí para aprender mas a cerca sobre el lenguaje java tengo un problema con un ejercicio y ya le e dado mil vueltas y no logro realizarlo, este ejercicio me pide que tengo q conectarme a un servidor en donde el cliente hace una petición y solo el servidor responderá con números octales (0,1,2,3,4,5,6,7),pero la conexión debe de ser solo comunicación UDP como puedo realizar eso en el siguiente código? necesito ayuda  :'(
/código del servidor

/*COMUNICACION UDP (protocolo sin conexión/IP) CLIENTE-SERVIDOR CON HILOS
La conexión UDP no es orientada a conexión, es decir, el servidor en principio
no sabe de donde viene el mensaje, aunque lo puede saber mirando el datagrama que le llega.
En otras palabras y comparando con la conexión TCP, UDP no necesita saber quien se conecta a él.
En UDP se envían datagramas a modo de mensajes.*/


package sockets4_servidor;

import java.io.*;
import java.net.*;

public class Sockets4_servidor {

static formu1 formu = new formu1();
static Sockets4_servidor meto = new Sockets4_servidor();
int PUERTO = 5000; //Puerto servidor   
String mensa1;
byte[] buffer = new byte[1024]; //buffer donde se almacenara los mensajes
DatagramSocket socketUDP;
DatagramPacket respuesta;
InetAddress direccion;
int puertoCliente;

public static void main(String[] args) {
formu.setVisible(true);meto.conexion();meto.ejecutarconexion();}


public void ejecutarconexion() {
Thread hilo = new Thread(new Runnable() {
@Override
@SuppressWarnings("empty-statement")
public void run() {
while (true) {   
  try {mensaje();}
  finally {;} } } } );
hilo.start();}

public void conexion() {
try {   
formu1.jTextArea1.append("Esperando conexión entrante en el puerto: " + PUERTO+ "\n");
direccion = InetAddress.getLocalHost();
formu1.jTextArea1.append("Servidor IP: " + direccion + "\n");}       
catch (IOException e) {System.err.println("Error "+e);} }

public void mensaje() {
try {
//Creacion del socket
socketUDP = new DatagramSocket(PUERTO);
//Preparo la respuesta
DatagramPacket peticion = new DatagramPacket(buffer, buffer.length);
//Recibo el datagrama
socketUDP.receive(peticion);
//Convierto lo recibido y mostrar el mensaje
mensa1 =new String(peticion.getData());
formu1.jTextArea1.append(mensa1+"\n");
//Obtengo el puerto y la direccion de origen
//Sino se quiere responder, no es necesario
puertoCliente = peticion.getPort();
direccion = peticion.getAddress();
mensa1="SERVIDOR: Hola Cliente";
buffer = mensa1.getBytes();
//creo el datagrama
respuesta = new DatagramPacket(buffer, buffer.length, direccion, puertoCliente);
//Envio la información
socketUDP.send(respuesta); }       
catch (IOException e) {System.err.println("Error "+e);} }

}/code]