SoloCodigo
Programación General => Java => Mensaje iniciado por: FELINUX en Viernes 11 de Junio de 2004, 23:56
-
hola, tengo que hacer un programa que calcula el area de un triangulo utilizando sockets, el cliente digita la base y la altura y en el servidor se realiza las operaciones y le devuelve al cliente el area :huh:
-
y que pretendes ..
que te lo hagan gratis??
flojo!!
deberias avergonzarte.. asi nunca dejaras de ser nu mediocre. :hola:
-
:blink:
"tengo que hacer un programa que calcula el area de un triangulo utilizando sockets"
Cada cosa... :blink:
1.- Busca un ejemplo de chat open source. El delphi viene con un par de buenos ejemplos y no dudo que existan algunos, sino muchos para java. Busca el más sencillo que funcione que puedas encontrar, repito: el más sencillo posible.
2.- Luego de entender el código adáptalo a tu problema puntual. Estas cosas sólo se aprenden bien con ejemplos. Cuando logres entender todo el código posiblemente no tendrás problemas en hacer otros programas sencillos con sockets.
3.- Supongo que no tendrás problemas con el cálculo del área y mandarlo como chat: En el cliente mandas el comando y parámetros en cadena , y el servidor te lo devuelve en un lenguaje coloquial. :rolleyes:
Además tienes que considerar estos casos:
Si envías "Hola" y luego "Mundo" pueden recibirlo fraccionado "Ho", "laMu" y "ndo" y también "HolaMundo" todo junto.
Si envías "HolaMundo" Pueden recibir: "Ho" y luego "laMundo", también "Holamu" y luego "ndo", también "HolaMundo" completo es posible.
Si envías "HolaMundo", luego "HolaMundo" otra vez pueden recibir: "HolaMundoHo" y luego "laMundo".
Si la red "está lenta" los mensajes llegan fraccionados (especialmente si son largos un Kb para arriba, en casos extremos si pasan 100 bytes ya empiezan a fraccionarse). Si la red tiene muchos buffers, los mensajes llegan todo unidos (especialmente si son cortos, unos cuantos bytes) y/o unidos en gran parte y a veces con partes fraccionadas como "HolaMundoHolaMun" y luego "do".
Si quieres mandar todo en binario primero tendrás que planificar tu propio protocolo de envío de comandos, tipos de datos, etc. Es más complejo pero más óptimo.
-
Lo suyo y por imitar un poco a SOAP seria que te definas el formato de tus mensajes como un sencillo código xml, por ejemplo:
para la peticion:
<CalculaArea>
<base>10</base>
<altura>10</altura>
</CalculaArea>
para la respuesta:
<AreaCalculada>50</AreaCalculada>
El problema que te comenta el compañero arriba lo puedes solucionar de dos formas:
- enviando en primer lugar una cabecera con el tamaño en bytes del mensaje, de este modo cuando hayas recibido tantos bytes como indica la cabecera empiezas a procesar la información del mensaje.
- definiendo un caracter de fin de mensaje, como el protocolo lo defines tu y solo vas a enviar números esto es lo más sencillo, cuando leas este caracter comienzas a procesar la información.