aplicacion cliente servidor

SaDSaD

ola a todos, keria pediros ayuda con una kosilla. estoy realizando una aplicacion (es un applet java).el applet genera una serie de datos y esos datos los kerria enviar a una aplicacion k este en un puerto que escuxa.entonces la kosa seria seria abrir un puerto y mediante el applet y la aplicacion k esta en ese puerto escuxando k pase los datos el uno al otro.creo k viene a ser un cliente servidor.
alguien me puede decir komo puedo hacer esto, alguna web kon ejemplos de esto o alguna rekomendacion?
Muxisimas gracias

r2d2rigo

Guguel -> "client server java" ->

http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer.html
http://pirate.shu.edu/wachsmut/Teaching/BMIS7111/sockets.html
http://www.cs.unc.edu/Courses/jbs/lessons/java/java_client_server1/

Son ejemplos con AWT, simplemente quitas y pones lo que quieras para adaptarlo a un applet y arreglado.

SaDSaD

gracias, aunk es un poko lioso

kas

Hombre si buscas algo basico no es nada lioso:

Ejemplo de cliente basico que envia una frase al servidor:
http://pastebin.com/f77ee079b

Ejemplo de servidor que recibe una frase y la devuelve en mayusculas:
http://pastebin.com/f3329f7d7

Con estos ejemplos basicos ya puedes empezar a trabajar.

Cosas a tener en cuenta:

1) Seguridad: debes montarte algun protocolo basico para identificar si quien se conecta puede hacerlo, es decir, en el servidor antes de hacer nada con los datos recibidos, hacer comprobaciones sobre ellos, como que empiezen por una frase en concreto como "soy_yo_noob" o una sequencia de bytes determinada.

2) El ejemplo del servidor es el sencillo, pero no el mejor. Si crees que tu servidor tendra muchas peticiones, lo mejor es crear una clase de atencion a la peticion, que se lanze en segundo plano y sea ella quien maneja ese protocolillo, de manera que el bucle principal del servidor solo se encarga de aceptar las conexiones y crear la clase que atendera cada peticion.

para esto ultimo tambien recomiendo tener en una collection las clases activas, y conforme se vayan creadno instancias de esa clase de atencion se guardan en la collection y cuando sean destruidas se borran de la collection. Asi puedes tener el numero de clientes conectados y muchas mas cosas.

SaDSaD

muxas gracias kas.
una preguntilla, en el ejemplo de mi aplicacion, kien seria el cliente y kien el servidor?el applet k interactua con el usuario es el k genera los datos y se los envia al puerto k eskuxa. tengo entendido k el cliente solicita un servicio al servidor y el servidor le envia una respuesta. se puede amoldar bien esto a mi kaso?
gracias de nuevo

kas

Bueno depende de lo que se dedique cada aprte, pero tipicamente un applet de java que se ejecuta en una web es un cliente.

A donde se conecta, como siempre es al mismo sitio, es el servidor, ya que cada vez que se abra una web con ese applet, tendra que conectar a un sitio.

Servidor solo hay 1.
Clientes hay N.

Sin tienes dudas durante el desarrollo, no dudes en preguntar por aqui, yo me divierto mucho con este tema :)

SaDSaD

Muxas gracias por la colaboracion.
Me ha surgido otra dudilla.
He estado buscando ejemplos y tengo unos cuantos de cliente-servidor.cuando los ejecuto en el mismo ordenador y dos ventanas de ms2 distintas va bien.
incluso cuando pongo el servidor en el portatil y el cliente en el de sobremesa va bien. pero cuando lo ago desde fuera de casa, en el trabajo por ejemplo, me dice connectException:connection refused:connect
y otra cosa, incluso cuando lo ago en el mismo ordenador, ejecuto el servidor y si al ejecutar el cliente pongo la ip del servidor como primer argumento, me da error tb. tengo k poner 192.168.1.33 k me sale k es mi localhost.

alguien puede ayudarme?

gracias

Soltrac

#7 has abierto el puerto correspndiente???

SaDSaD

al poner en el programa java serverSocket(1234) no se abre ya ese puerto??

kas

Hm..

1) comprueba el firewall de windows:
1.1) Panel de control / Fireall de windows /
1.1.1) Desactivar
1.1.1) EN es aventana te vas a conexiones y las DESMARCAS todas.

2) Ahora ejecutandolo desde la misma maquina no tendras problemas

3) El servidor escucha por el puerto que le digas. Si quieres acceder desde fuera de la red, como por ejemplo del curro a casa, tendras que abrir el puerto que use el servidor en el router y mapearlo a la ip de tu maquina.

Eso que dices del primer argumento y tal.. piensa que nosotros no conocemos el codigo que estas utilizando, asi que con esa informacion vamos a ciegas.

Analiza mejor el codigo que usas y busca en google todas aquellas lineas que no entiendas. Si ves que te supera postea el codigo (como yo en pastebin que es muy comodo) y veremos que se puede hacer.

Tambien intenta sacar el maximo de informacion de cada excepcion.

SaDSaD

perdon, mi codigo es este

http://pastebin.com/m7466432a

e probado a desactivar e firewall y me sigue diciendo

connection refused:connect

Usuarios habituales

  • SaDSaD
  • kas
  • Soltrac
  • r2d2rigo