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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Java. Net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Java. Net  (Leído 3,172 veces)
00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Java. Net
« en: 20 Mayo 2019, 09:35 am »

Buenas alguien tendrá la api de java.net en español? Solo la información de la api clases métodos como se usan, para que se usan etc. Entiéndase por java.net la librería de clases para red en java.

Enviado desde mi ANE-LX3 mediante Tapatalk


En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Java. Net
« Respuesta #1 en: 20 Mayo 2019, 21:22 pm »

Buenas alguien tendrá la api de java.net en español? Solo la información de la api clases métodos como se usan, para que se usan etc. Entiéndase por java.net la librería de clases para red en java.

Enviado desde mi ANE-LX3 mediante Tapatalk

La tienes en la misma jdk integrada ya, tendras que traducirla tú mismo, un trabajon, eso tomaría líneas de escritura, y las versiones de Java nuevas, como jdk 9 en adelante incluyen mejoras como http 2.0, HttpClient, HttpRequest propias etc.

Estás pidiendo mucho. Un libro completo, incluso los hay.


« Última modificación: 6 Junio 2019, 17:26 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Java. Net
« Respuesta #2 en: 21 Mayo 2019, 15:03 pm »

Entiendo, te explico lo que quiero hacer para ver si me pueden orientar, estoy aprendiendo java, y leyendo fundamentos básicos del networking de ccna, mi meta es aprender java para hacer apps cliente servidor que trabajen en red. Seria un programa sencillo, en principio solo permitir enviar un mensaje a otra computadora en Internet, para que una vez aprendido como se comunican incluir auténticacion, envío de archivos, un posible cifrado etc. Es decir usar ese pequeño programa para aprender, ya que siempre he querido aprender un lenguaje y redes, pero creo que no he sabido como comenzar.

Enviado desde mi ANE-LX3 mediante Tapatalk
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Java. Net
« Respuesta #3 en: 21 Mayo 2019, 15:18 pm »

Entiendo, te explico lo que quiero hacer para ver si me pueden orientar, estoy aprendiendo java, y leyendo fundamentos básicos del networking de ccna, mi meta es aprender java para hacer apps cliente servidor que trabajen en red. Seria un programa sencillo, en principio solo permitir enviar un mensaje a otra computadora en Internet, para que una vez aprendido como se comunican incluir auténticacion, envío de archivos, un posible cifrado etc. Es decir usar ese pequeño programa para aprender, ya que siempre he querido aprender un lenguaje y redes, pero creo que no he sabido como comenzar.

Enviado desde mi ANE-LX3 mediante Tapatalk

Muy bien con Sockets está tu solución, a la hora de cifrar claramente se complica un poco más pero no es imposible.

... continuara



Ejemplo código enviando datagramas a servidor UDP conteniendo lista de Strings para ser procesada y luego le devolverá el resultado  PoC.

https://foro.elhacker.net/ejercicios/como_enviar_un_arraylist_del_cliente_al_servidor_usando_udp-t496078.0.html;msg2194318#msg2194318



Otro ejemplo

Código
  1. /**
  2.  *
  3.  *  La pc debe estar conectada a internet
  4.  *  es la representacion de una direccion ip, tanto para ipv4 e ipv6, siendo usada
  5.  *  por las demas clases Socket,ServerSocket, URL, DatagramSocket, DatagramPacket y mas.
  6.  *  usualmente incluye el nombre de host aka hostname, y la direccion ip
  7.  *
  8.  *  No tiene constructores publicos, usa metodos factoria publicos que se conectan
  9.  *  a un servidor DNS para resolver el nombre de host
  10.  */
  11. public class HostNameIPInetAddress {
  12.  
  13.    private static final Logger LOGGER = Logger.getLogger(HostNameIPInetAddress.class.getSimpleName());
  14.  
  15.    public HostNameIPInetAddress() {
  16.        //resolverNombreDeDominio();
  17.        //obtenerIpLocal();
  18.        tiposDeDirecciones();
  19.    }
  20.  
  21.    private void resolverNombreDeDominio() {
  22.        try {
  23.            final InetAddress inetAddress = InetAddress.getByName("www.facebook.com");
  24.            LOGGER.info(inetAddress.toString());
  25.  
  26.            /**
  27.              *
  28.              * www.facebook.com/31.13.83.36
  29.              * Process finished with exit code 0
  30.              */
  31.  
  32.            final InetAddress inetAddress2 = InetAddress.getByName("31.13.83.36");
  33.            LOGGER.info(inetAddress2.getHostName());
  34.  
  35.            final InetAddress[] inetAddresses3 = InetAddress.getAllByName("93.115.28.104");
  36.            Stream.of(inetAddresses3).forEach(e -> LOGGER.info(e.toString()));
  37.  
  38.  
  39.        } catch (UnknownHostException e) {
  40.            e.printStackTrace();
  41.        }
  42.    }
  43.  
  44.    /**
  45.      * Obtiene la ip local y el nombre del host
  46.      * _0x52eb/192.168.56.1
  47.      */
  48.    private void obtenerIpLocal() {
  49.        try {
  50.            final InetAddress inetAddress = InetAddress.getLocalHost();
  51.            LOGGER.info(inetAddress.toString());
  52.            LOGGER.info(inetAddress.getHostAddress());
  53.        } catch (UnknownHostException e) {
  54.            e.printStackTrace();
  55.        }
  56.    }
  57.  
  58.    /**
  59.      * Tipos de direcciones
  60.      *
  61.      * Cada direccion ip tiene un patron, 127.0.0.1 es la ip loopback
  62.      * ipv4 en el rango de 224.0.0.0 a 239.255.255.255 son multicast
  63.      *
  64.      * Java incluye 10 metodos para saber que direccion ip es de un tipo
  65.      *
  66.      */
  67.    private void tiposDeDirecciones() {
  68.        try {
  69.            final InetAddress globalAddress = InetAddress.getByName("www.facebook.com");
  70.            if(globalAddress.isAnyLocalAddress()) {
  71.  
  72.            } else if(globalAddress.isLoopbackAddress()) {
  73.  
  74.            } else if(globalAddress.isLinkLocalAddress()) {
  75.  
  76.            } else if(globalAddress.isSiteLocalAddress()) {
  77.  
  78.            } else {
  79.                LOGGER.info("Es una direccion global: " + globalAddress.getHostAddress());
  80.            }
  81.  
  82.        } catch (UnknownHostException e) {
  83.            e.printStackTrace();
  84.        }
  85.    }
  86.  
  87.    public static void main(String  ...ablalb) {
  88.        new HostNameIPInetAddress();
  89.    }
  90. }
  91.  


Código
  1. import javax.swing.*;
  2. import java.io.*;
  3. import java.net.Socket;
  4. import java.net.UnknownHostException;
  5. import java.nio.charset.StandardCharsets;
  6. import java.util.Objects;
  7.  
  8. /**
  9.  * Usando al Server dict.org con fd-eng-spa para traducir de ingles a español
  10.  * no es lo maximo, pero es un buen ejemplo, logrando alguna utilidad que quieras.
  11.  *
  12.  * Te puedes conectar a este dominio via telnet desde la consola de windows
  13.  * previamente activando telnet en, activar caracteristicas de windows, puedes usar otra app para telnet
  14.  * como putty tambien.
  15.  */
  16. public class SocketEscribiendoDictOrg {
  17.  
  18.    public SocketEscribiendoDictOrg(final String palabraTraducir) {
  19.  
  20.        try(final Socket socket = new Socket("dict.org",2628);
  21.  
  22.            final OutputStream out = socket.getOutputStream();
  23.            final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8))) {
  24.  
  25.            //tiempo de espera maximo 10 segundos
  26.            socket.setSoTimeout(10000);
  27.  
  28.            bw.write("DEFINE fd-eng-spa " + palabraTraducir);
  29.            bw.write(System.lineSeparator());
  30.            bw.flush();
  31.  
  32.            InputStreamReader in = new InputStreamReader(socket.getInputStream(),StandardCharsets.UTF_8);
  33.            BufferedReader br = new BufferedReader(in);
  34.            String line;
  35.            while (Objects.nonNull(line = br.readLine())) {
  36.                if(line.startsWith("250 ")) {
  37.                    return;
  38.                } else if(line.startsWith("552 ")){
  39.                    System.out.print("No exite la palabra");
  40.                    return;
  41.                } else if(line.matches("[0-9]{1,3}\\d .*")) {
  42.                    continue;
  43.                } else if(line.trim().equals(".")) {
  44.                    continue;
  45.                } else {
  46.                    System.out.println(line);
  47.                }
  48.            }
  49.            //escribiendo quit al server para salir
  50.            bw.write("quit");
  51.            bw.write(System.lineSeparator());
  52.            bw.flush();
  53.        } catch (UnknownHostException e) {
  54.            e.printStackTrace();
  55.        } catch (IOException e) {
  56.            e.printStackTrace();
  57.        }
  58.    }
  59.  
  60.    public static void main(String ...blaBla) {
  61.        final String palabra = JOptionPane.showInputDialog(null,"Introduce palabra en ingles");
  62.        if(Objects.nonNull(palabra)) {
  63.            new SocketEscribiendoDictOrg(palabra);
  64.        } else {
  65.          JOptionPane.showMessageDialog(null,"No introdujo palabra");
  66.          System.exit(0);
  67.        }
  68.    }
  69. }
  70.  



Ejemplo Socket mas Cliente con simple builder por separado

Código
  1. import java.time.Instant;
  2. import java.time.ZoneId;
  3. import java.time.format.DateTimeFormatter;
  4. import java.util.Locale;
  5. import java.util.logging.Logger;
  6.  
  7. /**
  8.  * Interface basica de ejemplo para los logs.
  9.  */
  10. public interface LoggerForSockets {
  11.  
  12.    default void info(final String info) {
  13.        Logger.getLogger("UdpLogger").info(info);
  14.    }
  15.  
  16.    default void error(final String error) {
  17.        Logger.getLogger("UdpLogger").warning(error);
  18.    }
  19.  
  20.    /**
  21.      *
  22.      * @return String con la hora formateada
  23.      */
  24.    default String getHora() {
  25.        return DateTimeFormatter.ofPattern("eeee, d  'de' MMMM 'de' uuuu hh:mm:ssS a")
  26.                .withLocale(Locale.getDefault())
  27.                .withZone(ZoneId.systemDefault())
  28.                .format(Instant.now());
  29.    }
  30. }

ServerSocket PoC

Código
  1. import java.io.*;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. import java.util.concurrent.*;
  5.  
  6. import static java.util.Objects.requireNonNull;
  7.  
  8. /**
  9.  *
  10.  * Uso:
  11.  *          ServerSocketHora.newBuilder()
  12.  *                 .conPuerto(13)
  13.  *                 .conNumeroDeHilos(10)
  14.  *                 .crearServerSocket()
  15.  *                 .respuestaAsincrona()
  16.  *                 .build();
  17.  *
  18.  *
  19.  * @autor rub´n
  20.  */
  21. public class ServerSocketHora implements LoggerForSockets, Serializable {
  22.  
  23.    private ExecutorService executorService;
  24.    private ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(2);
  25.    private int puerto;
  26.    private ServerSocket serverSocket;
  27.    private Socket socket;
  28.  
  29.    private ServerSocketHora() {
  30.    }
  31.  
  32.    public static ServerSocketHora newBuilder() {
  33.        return new ServerSocketHora();
  34.    }
  35.  
  36.    public ServerSocketHora conNumeroDeHilos(final int numHilos) {
  37.        if (numHilos < 0) { // preconfigurados con 50 hilos
  38.            this.executorService = Executors.newFixedThreadPool(50);
  39.        } else {
  40.            this.executorService = Executors.newFixedThreadPool(numHilos);
  41.        }
  42.        return this;
  43.    }
  44.  
  45.    public ServerSocketHora conPuerto(final Integer puerto) {
  46.        this.puerto = requireNonNull(puerto, "Puerto no debe ser nulo");
  47.        return this;
  48.    }
  49.  
  50.    public ServerSocketHora crearServerSocket() {
  51.        try {
  52.            this.serverSocket = new ServerSocket(puerto);
  53.            info("Conexion establecida por el puerto " + puerto);
  54.        } catch (IOException ex) {
  55.            error(ex.toString());
  56.        }
  57.        return this;
  58.    }
  59.  
  60.    /**
  61.      * Aqui es donde esta la parte mas dificil en realidad
  62.      * asincrono
  63.      *
  64.      * @return ServerSocketHora con la hora al cliente
  65.      */
  66.    public ServerSocketHora respuestaAsincrona() {
  67.        scheduled.scheduleAtFixedRate(() -> {
  68.            try {
  69.                /*
  70.                  * Sin try-with resources en este caso, por que
  71.                  * se cerrara inmediatamente, impidiento que se engendre un nuevo thread
  72.                  */
  73.                this.socket = serverSocket.accept();
  74.                info("Conectado con cliente: "+  socket.getLocalAddress()+":"+ socket.getLocalPort());
  75.            } catch (IOException e) {
  76.                error(e.toString());
  77.            }
  78.            CompletableFuture.runAsync(() -> {
  79.                try (final BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
  80.                     final DataOutputStream data = new DataOutputStream(bos)) {
  81.  
  82.                    synchronized (this) {
  83.                        data.writeUTF("Hora Servidor: " + getHora());
  84.                        data.writeUTF(System.lineSeparator());
  85.                        data.flush();
  86.                    }
  87.                } catch (IOException ex) {
  88.                    error(ex.toString());
  89.                }
  90.            }, executorService);
  91.        },0,1,TimeUnit.NANOSECONDS);
  92.        return this;
  93.    }
  94.  
  95.    public ServerSocketHora build() {
  96.        return new ServerSocketHora();
  97.    }
  98.  
  99.    public static void main(String... blabla) {
  100.        ServerSocketHora.newBuilder()
  101.                .conPuerto(13)
  102.                .conNumeroDeHilos(10)
  103.                .crearServerSocket()
  104.                .respuestaAsincrona()
  105.                .build();
  106.    }
  107.  
  108. }
  109.  

Cliente PoC

Código
  1. import java.io.*;
  2. import java.net.InetAddress;
  3. import java.net.Socket;
  4. import java.util.concurrent.CompletableFuture;
  5. import java.util.concurrent.ExecutorService;
  6. import java.util.concurrent.Executors;
  7. import static java.util.Objects.requireNonNull;
  8.  
  9. /**
  10.  * Uso:
  11.  *          ServerClientHora.newBuilder()
  12.  *                 .conPuerto(13)
  13.  *                 .conNumeroDeHilos(10)
  14.  *                 .crearSocketCliente()
  15.  *                 .solicitudAsincrona()
  16.  *                 .build();
  17.  *
  18.  * @author rub´n
  19.  */
  20. public class ServerClientHora implements Serializable,LoggerForSockets {
  21.  
  22.    private ExecutorService executorService;
  23.    private int puerto;
  24.    private Socket socket;
  25.  
  26.    private ServerClientHora() {
  27.    }
  28.  
  29.    public static ServerClientHora newBuilder() {
  30.        return new ServerClientHora();
  31.    }
  32.  
  33.    /**
  34.      *
  35.      * @param numHilos preconfigurados con 50
  36.      * @return ServerClientHora
  37.      */
  38.    public ServerClientHora conNumeroDeHilos(final int numHilos) {
  39.        if (numHilos < 0) {
  40.            this.executorService = Executors.newFixedThreadPool(50);
  41.        } else {
  42.            this.executorService = Executors.newFixedThreadPool(numHilos);
  43.        }
  44.        return this;
  45.    }
  46.  
  47.    public ServerClientHora conPuerto(final Integer puerto) {
  48.        this.puerto = requireNonNull(puerto, "Puerto no debe ser nulo");
  49.        return this;
  50.    }
  51.  
  52.    /**
  53.      *
  54.      * @return ServerClientHora
  55.      */
  56.    public ServerClientHora crearSocketCliente() {
  57.        try {
  58.            this.socket = new Socket(InetAddress.getLocalHost(), puerto);
  59.            info("Conexion establecida por el puerto " + puerto);
  60.            socket.setSoTimeout(5000);//10 segundos de espera maximo
  61.            info("Cliente conectado " + socket.getLocalAddress() + ":" + socket.getLocalPort());
  62.  
  63.        } catch (IOException ex) {
  64.            error(ex.toString());
  65.        }
  66.        return this;
  67.    }
  68.  
  69.    /**
  70.      * Aqui se leera la respuesta del ServerSocket aka Server
  71.      * @return ServerClientHora
  72.      */
  73.    public ServerClientHora solicitudAsincrona() {
  74.        CompletableFuture.runAsync(() -> {
  75.            try (final BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
  76.                 final DataInputStream data = new DataInputStream(bis)) {
  77.  
  78.                synchronized (this) {
  79.                    info(data.readUTF());
  80.                }
  81.            } catch (IOException ex) {
  82.                error(ex.toString());
  83.            }
  84.        }, executorService);
  85.        return this;
  86.    }
  87.  
  88.    /**
  89.      *
  90.      * @return a new ServerClientHora
  91.      */
  92.    public ServerClientHora build() {
  93.        return new ServerClientHora();
  94.    }
  95.  
  96.    public static void main(String... blabla) {
  97.  
  98.        ServerClientHora.newBuilder()
  99.                .conPuerto(13)
  100.                .conNumeroDeHilos(10)
  101.                .crearSocketCliente()
  102.                .solicitudAsincrona()
  103.                .build();
  104.  
  105.    }
  106.  
  107. }
« Última modificación: 5 Junio 2019, 08:57 am por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Java. Net
« Respuesta #4 en: 21 Mayo 2019, 15:28 pm »

Muy bien me agrada como va esto, cualquier información referente al tema en cuestión será bien recibida. Muchas gracias son muy rápidos ayudando.

Enviado desde mi ANE-LX3 mediante Tapatalk
En línea

00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Java. Net
« Respuesta #5 en: 6 Junio 2019, 00:46 am »

Buenas tardes, serian tan amables de explicarme con detalle la relación entre estas clases, ServerSocket, SocketImpl, SocketOptions. Cuando digo que quiero saber la relación, me refiero a que según el API de java el trabajo de la clase ServerSocket es ejecutado por una instancia de la clase SocketImpl, pero como es esto posible si la clase SocketImpl es una clase abstracta y por ende no puede ser instanciada, por otro lado dice que la clase SocketImpl implementa la interfaz SocketOptions. Me podrian explicar gracias.
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Java. Net
« Respuesta #6 en: 6 Junio 2019, 14:39 pm »

Ya tú pregunta es Java como tal y sobre el diseño de ella, se instancia por medio de SocksSocketImpl está hereda de PlainSocketImpl que está hereda a AbstractPlainSocketImpl que está hereda a SocketImpl y está implementa a SocketsOptions.

Los métodos contenidos en SocketImpl son implementados claramente por AbstractPlainSocketImpl.

Por otra parte se ve que PlainSocketImpl sobreescribe algunos métodos de su clase Padre AbstractPlainSocketImpl, como por ejemplo el método



Revisar, use alguna jdk 8, en versiones mas nuevas de la JDK no encuentro el método processNRException()
Código
  1. create(boolean stream)
  2.  
  3. processNRException(InetAddress address, int port, int backlog) throws IOExceptiom
« Última modificación: 19 Junio 2019, 22:28 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Java. Net
« Respuesta #7 en: 6 Junio 2019, 15:10 pm »

Buen día, gracias por tu respuesta, si veo que no se instancia pero si se usa a través de la herencia por la jerarquía de clases. ahora bien, aclarado esto, podrías explicarme esta línea de código, "cs = ss.accept();" estoy picando y analizando un código fuente de una aplicación cliente servidor en donde un servidor está esperando por un cliente el cual cuando se conecta envía unos mensajes luego el server y el cliente cierran el socket, no envío el código completo porque la idea es que yo aprenda y no que me des todas las respuestas, solo aclarar dudas pero si aun así deseas verlo te doy el link de donde lo saque. en esta línea lo que puedo entender es que cs es el socket cliente, y ss el socket servidor el cual se instancio para poder usar el método accept() . lo que no entiendo es porque lo que devuelve el método accept se le asigna a la variable tipo socket cs, esta línea de código está en la clase servidor.

Enviado desde mi ANE-LX3 mediante Tapatalk



por si necesitas un poco más,  
Código
  1. public void startServer()//Método para iniciar el servidor
  2. { try
  3. {
  4. System.out.println("Esperando..."); //Esperando conexión
  5.  
  6. cs = ss.accept(); //Accept comienza el socket y espera una conexión desde un cliente
  7.  
  8. System.out.println("Cliente en línea");
  9.  

Enviado desde mi ANE-LX3 mediante Tapatalk
« Última modificación: 6 Junio 2019, 15:17 pm por simorg » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Java. Net
« Respuesta #8 en: 6 Junio 2019, 15:34 pm »

Buen día, gracias por tu respuesta, si veo que no se instancia pero si se usa a través de la herencia por la jerarquía de clases. ahora bien, aclarado esto, podrías explicarme esta línea de código, "cs = ss.accept();" estoy picando y analizando un código fuente de una aplicación cliente servidor en donde un servidor está esperando por un cliente el cual cuando se conecta envía unos mensajes luego el server y el cliente cierran el socket, no envío el código completo porque la idea es que yo aprenda y no que me des todas las respuestas, solo aclarar dudas pero si aun así deseas verlo te doy el link de donde lo saque. en esta línea lo que puedo entender es que cs es el socket cliente, y ss el socket servidor el cual se instancio para poder usar el método accept() . lo que no entiendo es porque lo que devuelve el método accept se le asigna a la variable tipo socket cs, esta línea de código está en la clase servidor.

Enviado desde mi ANE-LX3 mediante Tapatalk



por si necesitas un poco más,  
Código
  1. public void startServer()//Método para iniciar el servidor
  2. { try
  3. {
  4. System.out.println("Esperando..."); //Esperando conexión
  5.  
  6. cs = ss.accept(); //Accept comienza el socket y espera una conexión desde un cliente
  7.  
  8. System.out.println("Cliente en línea");
  9.  

Enviado desde mi ANE-LX3 mediante Tapatalk

Ya pues bien,

Investiga sobre el método accept, este retornará un objeto Socket se bloquea mientras espera una conexión, la API te lo dice.

Y claro lo asigna, seguro lo necesita para realizar otras cosas.

La línea 73 de la clase ServerSocketHora hace lo mismo, para algo te puse el código y con patrón Builder, pensando en gente como tú y como yo, paso por paso siendo algo más explicito de lo que hace.

Si la ejecutas verás que en esa línea el Server espera establecer conexion con un cliente, o sea, internamente se bloquea, y luego la línea 74 será ejecutada, justo al establecer conexion
.
« Última modificación: 6 Junio 2019, 17:46 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
00dp2100

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Java. Net
« Respuesta #9 en: 17 Junio 2019, 08:24 am »

Adjunto una imagen con el código fuente de un programa pequeño para verificar que socket devuelve el método accept una vez que acepta una petición de un cliente, en el primer print se ven direcciones ip 0.0.0.0 puerto 9999 entiendo que corresponde a la dirección ip y el puerto de escucha del Server, en el segundo print aparece local host y local puerto 51271(51271 puerto efímero asignado automáticamente por el SO) entiendo que es el socket cliente haciendo una petición al Socket Server en escucha ip 127.0.0.1 puerto 9999, la duda está en el tercer print, exactamente donde está ubicado ese Socket que devuelve el método accept es decir esta enlazado al cliente o al servidor?  y exactamente que ip y puerto usa? se que tal vez estoy preguntando algo tonto y debería preocuparme por cosas más importantes pero me gusta saber el porqué de las cosas.

Enviado desde mi ANE-LX3 mediante Tapatalk
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines