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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Como usar Socket en java..!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como usar Socket en java..!!  (Leído 8,974 veces)
HackerJack

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Como usar Socket en java..!!
« en: 3 Septiembre 2011, 23:52 pm »

hola..!! yo soy nuevo en esta pagina web,
tengo una duda sobre java, necesito saber como se utilizan los socket par enviarse informacion entre dos aplicaciones..???? me gustaria que me dieran una idea graxias de antemano..................
 ::)   :silbar:  ;-)  :laugh:


En línea

klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: Como usar Socket en java..!!
« Respuesta #1 en: 4 Septiembre 2011, 00:29 am »

El servidor debe instanciar la clase java.net.ServerSocket con el puerto a conectar, de esta instancia obtienes un objeto java.net.Socket con el método accept(), al momento que alguien se conecte,  con el método getOutputStream del Socket obtienes un objeto java.io.ObjectOutputStream, con el cual puedes usar el método writeObject para escribir objectos que recibirá el cliente.

El cliente debe instanciar Socket, deberá recibir como primer argumento la ip del servidor y como segundo argumento el puerto por donde se realizará la conexion, (debe ser el mismo que usa el server)

Para ambos sockets con los método getOutputStream y getInputStream se recibe un objeto ObjectOutputStream y ObjectInputStream respectivamente.

Te dejo un programa ejemplo que se conecta a tu propio pc:

Main: (primero lo ejecutas como server, para esto llamas al metodo s(), luego para instanciar cliente el main llama a c())

Código
  1. package sockets;
  2.  
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. import java.io.*;
  6. import javax.swing.*;
  7.  
  8. public class Main {
  9.  
  10.    public static void main(String[] args) {
  11.  
  12.  
  13.        s(); // la segunda vez que lo ejecutas llama a c();
  14.  
  15.  
  16.    }
  17.  
  18.    static void s(){
  19.  
  20.        Server s=new Server();
  21.  
  22.    }
  23.  
  24.    static void c(){
  25.  
  26.        Client c=new Client();
  27.  
  28.    }
  29.  
  30. }
  31.  
  32.  

Server:

Código
  1.  
  2. package sockets;
  3.  
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import java.io.*;
  7. import javax.swing.JOptionPane;
  8.  
  9. public class Server {
  10.  
  11.    ServerSocket ss;
  12.    Socket s;
  13.  
  14.    Server(){
  15.  
  16.        try {
  17.            ss = new ServerSocket(9999);
  18.  
  19.                        s = ss.accept();
  20.  
  21.                        oos=new ObjectOutputStream(s.getOutputStream());
  22.  
  23.                        oos.writeObject("Hello Socket");
  24.  
  25.        } catch (IOException ex) {
  26.  
  27.            close();
  28.  
  29.        }
  30.  
  31.        close();
  32.  
  33.    }
  34.  
  35.    void close(){
  36.        try {
  37.            s.close();
  38.            ss.close();
  39.        } catch (IOException ex) {
  40.  
  41.        }
  42.  
  43.    }
  44.  
  45.    void read(){
  46.  
  47.                            try{
  48.  
  49.        ois=new ObjectInputStream(s.getInputStream());
  50.  
  51.                    String str=(String) ois.readObject();
  52.  
  53.                    JOptionPane.showMessageDialog(null, str2, "Server dice:", JOptionPane.INFORMATION_MESSAGE);
  54.  
  55.                    Thread.sleep(15);
  56.  
  57.                    }catch(Exception e){
  58. e.printStackTrace();
  59.                }
  60.  
  61.            }
  62.  
  63.    }
  64.  
  65.  

Cliente:

Código
  1.  
  2. package sockets;
  3.  
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import java.io.*;
  7. import java.util.Scanner;
  8. import javax.swing.*;
  9.  
  10. public class Client {
  11.  
  12.    Socket s;
  13.  
  14.    Client(){
  15.  
  16.        try{
  17.  
  18.         s=new Socket("localhost", 9999);
  19.  
  20.        ois=new ObjectInputStream(s.getInputStream());
  21.  
  22.        String str2=(String) ois.readObject();
  23.  
  24.        JOptionPane.showMessageDialog(null, str2);
  25.  
  26.        }catch(IOException ioex){
  27.  
  28.        }catch(ClassNotFoundException ex){
  29.  
  30.        }
  31.  
  32.  
  33.  
  34.  
  35.  
  36.    }
  37.  
  38. }
  39.  
  40.  
  41.  

(Funcionará siempre y cuando no tengas el puerto 9999 ocupado  :xD )

Saludos!


« Última modificación: 4 Septiembre 2011, 00:35 am por klaine » En línea

l2ch

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Como usar Socket en java..!!
« Respuesta #2 en: 9 Febrero 2012, 22:16 pm »

una pregunta, ya realizado la conexión del cliente y el servidor, hay alguna manera de que el cliente pueda acceder a los metodos del servidor. o solamente el cliente realiza peticiones mediante flujo de datos?????
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Como usar Socket en java..!!
« Respuesta #3 en: 10 Febrero 2012, 17:15 pm »

una pregunta, ya realizado la conexión del cliente y el servidor, hay alguna manera de que el cliente pueda acceder a los metodos del servidor. o solamente el cliente realiza peticiones mediante flujo de datos?????

Exacto, tu solo le envías información que el servidor interpreta y después de interpretarla te contesta.
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Como usar Socket en java..!!
« Respuesta #4 en: 11 Febrero 2012, 00:24 am »

klaine he usado tu código para pruebas y me ha surgido una duda.
¿Qué ocurriría si entran varios clientes a la vez?

Lo he solucionado con un while(socket.getKeepAlive()); pero no se si es lo más eficiente.
En línea

Cherry2612

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Como usar Socket en java..!!
« Respuesta #5 en: 18 Julio 2012, 19:25 pm »

Hola, me parece muy interezante tu código, lo que quice hacer funcionar pero me marca una serie de errores de los cuales no se corregir. Espero me puedas ayudar.
En tu código de Server en la siguiente linea de código no reconoce str2 porque??

JOptionPane.showMessageDialog(null, str2, "Server dice:", JOptionPane.INFORMATION_MESSAGE);

ademas cuando lo quiero ejecutar me marca lo siguiente

Exception in thread "main" java.lang.NullPointerException
   at sockets.Server.close(Server.java:40)
   at sockets.Server.<init>(Server.java:30)
   at sockets.Main.s(Main.java:20)
   at sockets.Main.main(Main.java:13)
En línea

reylagarto19

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Como usar Socket en java..!!
« Respuesta #6 en: 1 Agosto 2012, 13:12 pm »

una pregunta, ya realizado la conexión del cliente y el servidor, hay alguna manera de que el cliente pueda acceder a los metodos del servidor. o solamente el cliente realiza peticiones mediante flujo de datos?????

aunque ya hace tiempo de este de post, si es cierto que se puede acceder a metodos de uno en otro....

para eso necesitas hecharle un ojo a la libreria CORBA, o montarte un ORB (lo cual me parece muy tedioso...), o si no quieres un ORB, puedes hacerlo de manera mas amigable con un RMI, y te ahorras hacer el Skeleton los proxys.... etc etc...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Quien me explica como usar o como funcionan los SocketS? (java)
Java
McKain 5 8,866 Último mensaje 16 Noviembre 2005, 18:52 pm
por McKain
Cómo enviar archivos vía socket en java
Java
Nekro_Psycho 0 15,416 Último mensaje 10 Enero 2006, 21:29 pm
por Nekro_Psycho
¿Que es y como usar un Wrapper en JAVA?
Java
cyberserver 6 13,318 Último mensaje 7 Diciembre 2009, 16:28 pm
por Leyer
Como Usar Session en java
Java
soy_nicanor 0 1,555 Último mensaje 3 Mayo 2015, 10:27 am
por soy_nicanor
Busco consejo. ( Es buena idea usar php como cliente socket?) « 1 2 »
PHP
Tonics 10 5,442 Último mensaje 19 Julio 2017, 20:16 pm
por Tonics
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines