• Martes 23 de Abril de 2024, 18:05

Autor Tema:  Programacion de Sockets en C  (Leído 1067 veces)

ro-mario81

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Programacion de Sockets en C
« en: Martes 30 de Diciembre de 2008, 21:08 »
0
Hola,

Necesito ayuda de alguien q me pueda echar una mano, tengo q realizar una practica y no tengo ni idea, alguine me ayuda? pago si es necesario dinero :S

saludos.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Programacion de Sockets en C
« Respuesta #1 en: Martes 30 de Diciembre de 2008, 23:43 »
0
pagame y te ayudo con la tarea ;)

ro-mario81

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Programacion de Sockets en C
« Respuesta #2 en: Martes 30 de Diciembre de 2008, 23:47 »
0
Ante todo gracias!! esta es la practica,

saludos.

En la práctica 2 se tenía un servicio remoto donde un programa cliente recibía órdenes de los usuarios a
través del teclado ya partir de estas órdenes realizaba peticiones a un servidor a través de una
conexión TCP utilizando sockets en "Modo cliente" (Sc). El servidor recibía las peticiones y en
devolvía los resultados mediante sockets en "Modo servidor" (Ss).
Para que el cliente y el servidor puedan dialogar y entenderse, siempre es necesario definir un
protocolo, que incluye una lista de peticiones que se pueden intercambiar entre el cliente y el
servidor, así como el formato de las peticiones y de las respuestas.
 
usuario
cliente
servidor
Sc
Ss
TCP Redes 2008-09/1
Primera Parte: Servidor de pedidos TCP
Esta práctica 3 pretende la realización de un "servidorPr3".
Este servidor PR3 proporcionará un servicio remoto de cálculo del importe de un pedido
completa, a partir de lo que ha realizar en la práctica 2.
El "cliente PR2" y el "servidor PR2" serán los mismos que en la práctica 2. La única diferencia en
nivel práctico (no de código en estos archivos) será que el usuario no deberá introducir
el identificador de un único producto sino que deberá introducir además la cantidad, separado por un
espacio en blanco. Es decir, si el usuario introduce "REF 2", significa que le han pedido 2
refrescos.
Para implementar el nuevo servidor PR3 debe partir del servidor PR2 y del cliente PR2 entregados en
la práctica 2. Este servidor estará compuesto de una parte servidora para dialogar con el cliente
PR2, y de una parte cliente para dialogar con el servidor PR2.
El servidor PR3 será el encargado de realizar el cálculo total del pedido. Por este motivo,
realizará una consulta al servidor PR2 por cada uno de los productos que el cliente le indique.
Supongamos que nos piden "CAF 3", entonces el servidor PR3 pedirá al servidor PR2 "CAF".
Entonces el cálculo es muy simple: para obtener el resultado que le pide el cliente, el servidor PR3
multiplicará el precio que le acaban de dar por 3, ya que el cliente le ha pedido 3 unidades de
café.
Una vez calculado este precio, el servidor PR3 generará un mensaje tipo "CAF 3 4.5" (el
que ha recibido del cliente más el precio que acaba de calcular), la imprimirá por pantalla y lo enviará
al cliente PR2.
Si el cliente PR2 envía algún código erróneo, el servidor PR3 enviará un pedido de respuesta
"ERROR".
Además, el servidor PR3 podrá recibir el pedido TOTAL del cliente PR2. En tal caso debe
devolver el valor total de todos los pedidos que ha realizado ese cliente.
El servidor PR3 recibirá como parámetros del programa el nombre de la máquina donde se encuentra el
servidor PR2.
 
usuario
cliente PR2
servidor PR3
Sc
Ss
Sc
TCP
TCP
servidor PR2
Ss
Redes 2008-09/1
El cliente se conectará al servidor PR3 con un mensaje de saludo "HELLO", tal y como lo
hacía en la práctica 2. El servidor PR3 se conectará siempre al servidor PR2 con con un mensaje
de saludo "HELLO".
El servidor PR3, una vez conectado al servidor PR2, no se desconectará.
Hay que distinguir entre mayúsculas y minúsculas, es decir, su resultado debe ser exactamente
igual que el de este enunciado. Por ejemplo, si los productos están en minúscula
devolveremos error.
Notas:
• Para el servidor PR3 debéis Basaros en el cliente PR2 y el servidor PR2.
• La única modificación que debe hacer en el código de la práctica 2 es modificar el código del
cliente PR2 de manera que use un puerto diferente para el acceso al Servidor PR3. Para acceder
el servidor PR2, el puerto que usará el servidor PR3 será el mismo que en la práctica 2.
• Hay que definir en el código 2 puertos: uno para la conexión Cliente PR2 <-> Servidor PR3, y
otro para la conexión Servidor PR3 <-> Servidor PR2
• En lenguaje C, para leer una cadena de teclado puede utilizar la función gets ().
char cadena [128];
gets (cadena);
• Recuerde que los mensajes que se envían son de texto.
• Para convertir una cadena a entero en C puede usar la función atoi ().
• Para convertir una cadena a un número en coma flotante en C puede usar la
función atof ().
• Para convertir un número a una cadena en C puede usar la función sprintf ().
Ejemplo:
A continuación se muestra una ejecución ejemplo del funcionamiento entre cliente y servidor. En
azul tiene el que se muestra por pantalla, en verde lo que se introduce por teclado y en rojo el
que se envían entre ellos.
Cliente Servidor PR3 Servidor PR2
HELLO ->
HELLO
<- HELLO
HELLO
 
HELLO ->
HELLO
<- HELLO
HELLO
REF 3
REF 3 ->
REF 3
REF ->
REF 2
<- REF 2
REF 2
REF 3 6
<- REF 3 6
REF 3 6
PAT 1
PAT 1 ->
PAT 1
PAT ->
PAT 3
<- PAT 3
PAT 3
PAT 1 3
<- PAT 1 3
PAT 1 3
XXX 5
XXX 5 ->
XXX 5
XXX ->
XXX ERROR
<- XXX ERROR
XXX ERROR
XXX 5 ERROR
<- XXX 5 ERROR
XXX 5 ERROR
TOTAL
TOTAL ->
TOTAL
TOTAL 9 euros
<- TOTAL 9 euros
TOTAL 9 euros
FI
FI ->
FI
<- FI
FI
Segunda Parte: Comunicación sin conexión con UDP (Opcional)
Modifique el cliente y el servidor para que dialoguen mediante UDP en lugar de TCP.
En este caso, puede obviar el pedido TOTAL.