• Jueves 14 de Noviembre de 2024, 19:23

Autor Tema:  Socket  (Leído 1560 veces)

FELINUX

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Socket
« en: Viernes 11 de Junio de 2004, 23:56 »
0
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:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Socket
« Respuesta #1 en: Sábado 12 de Junio de 2004, 03:44 »
0
y que pretendes ..
que te lo hagan gratis??

flojo!!
deberias avergonzarte.. asi nunca dejaras de ser nu mediocre. :hola:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Socket
« Respuesta #2 en: Sábado 12 de Junio de 2004, 17:31 »
0
: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.

remoh

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Socket
« Respuesta #3 en: Sábado 12 de Junio de 2004, 17:46 »
0
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.