• Viernes 8 de Noviembre de 2024, 20:46

Autor Tema:  Pasar Mensaje De Minúsclas A Mayúsculas  (Leído 2224 veces)

Tootsie

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Pasar Mensaje De Minúsclas A Mayúsculas
« en: Lunes 6 de Noviembre de 2006, 02:22 »
0
Hola,

He hecho un programa que recibe un mensaje de una máquina cliente a la máquina servidora. El mensaje se recibe ok por la pantalla, pero siempre en minúsuclas. Lo que me gustaría hacer es:

1. Escribir un mensaje por pantalla del cliente
2. Cuando aparezca en la pantalla del servidor, me devuelva el mensaje en MAYUSCULAS

Todo lo que he probado hasta el momento no funciona. Creo que tengo que usar el toupp(), pero me da un error de casting, pues paso un carácter y me pide un entero  

CODIGO DEL SERVIDOR
Código: Text
  1.  
  2.  
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <arpa/inet.h>
  7. #include <netdb.h>
  8. #include <stdio.h>
  9. #include <unistd.h>
  10.  
  11. #define TAMBUFFER 256
  12.  
  13. int main()
  14. {
  15.    int ID_socket_ser, ID_socket_ser2, result, long_cli;
  16.    struct sockaddr_in address_ser, address_cli;
  17.    char mensaje[TAMBUFFER];
  18.  
  19.  
  20.    ID_socket_ser=socket(AF_INET, SOCK_STREAM,0);
  21.    if (ID_socket_ser==-1)
  22.    {
  23.       printf("error creacion socket\n");
  24.       exit(-1);
  25.    }
  26.    
  27.  
  28.    address_ser.sin_family = AF_INET;
  29.    address_ser.sin_addr.s_addr = htonl(INADDR_ANY);
  30.    address_ser.sin_port = htons(6001);
  31.  
  32.    result = bind(ID_socket_ser, (struct sockaddr *) &address_ser, sizeof(address_ser));
  33.    if (result<0) {
  34.       printf("error\n");
  35.       exit(-1);
  36.    }
  37.    
  38.  
  39.    listen(ID_socket_ser,2);
  40.  
  41.  
  42.    long_cli = sizeof(address_cli);
  43.  
  44.    ID_socket_ser2 = accept(ID_socket_ser, (struct sockaddr *) &address_cli, &long_cli);
  45.    if (ID_socket_ser2<0) {
  46.       printf("Error\n");
  47.       exit(-1);
  48.    }
  49.    
  50.  
  51.  
  52.    do {
  53.       memset(mensaje,0x0,TAMBUFFER);
  54.       result = recv(ID_socket_ser2, mensaje, TAMBUFFER, 0);
  55.       if (result<0) {
  56.          printf("error\n");
  57.          exit(-1);
  58.       }
  59.       else
  60.       {
  61.          printf("%s\n",mensaje);
  62.       }
  63.    } while(strncmp(mensaje,"fin",3));
  64.  
  65.  
  66.    return 0;
  67.  
  68. }
  69.  
  70.  
  71.  
  72.  


CÓDIGO DEL CLIENTE
Código: Text
  1.  
  2.  
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <arpa/inet.h>
  7. #include <netdb.h>
  8. #include <stdio.h>
  9. #include <unistd.h>
  10.  
  11. int main(int argc, char *argv[])
  12. {
  13.    int ID_socket_cli, result;
  14.    struct sockaddr_in address_ser, address_cli;
  15.    struct hostent *h;
  16.    char mensaje[] = "Esto es un mensaje al mundo.";
  17.  
  18.  
  19.    if(argc<2) {
  20.     printf("uso : %s servidor \n", argv[0]);
  21.     exit(1);
  22.   }
  23.  
  24.  
  25.    ID_socket_cli=socket(AF_INET, SOCK_STREAM,0);
  26.    if (ID_socket_cli==-1)
  27.    {
  28.       printf("error\n");
  29.       exit(-1);
  30.    }
  31.    
  32.  
  33.    address_cli.sin_family = AF_INET;
  34.    address_cli.sin_addr.s_addr = htonl(INADDR_ANY);
  35.    address_cli.sin_port = htons(0);
  36.  
  37.    result = bind(ID_socket_cli, (struct sockaddr *) &address_cli, sizeof(address_cli)); if (result<0) {
  38.       printf("error\n");
  39.       exit(-1);
  40.    }
  41.    
  42.  
  43.  
  44.    h = gethostbyname(argv[1]);
  45.    printf("Escribe mensaje para %s\n",inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));
  46.    address_ser.sin_family = h->h_addrtype;
  47.    memcpy((char *) &address_ser.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
  48.    address_ser.sin_port = htons(6001);
  49.  
  50.  
  51.    result = connect(ID_socket_cli, (struct sockaddr *) &address_ser, sizeof(address_ser));
  52.    if (result<0) {
  53.       printf("error\n");
  54.       exit(-1);
  55.    }
  56.    
  57.  
  58.    do {
  59.       strcpy(mensaje,"");
  60.       gets(mensaje);
  61.       result = send(ID_socket_cli, mensaje, strlen(mensaje)+1, 0);
  62.       if (result<0) {
  63.          printf("error\n");
  64.          exit(-1);
  65.       }
  66.    } while(strncmp(mensaje,"fin",3));
  67.  
  68.  
  69.  
  70.  
  71.  
  72.    return 0;
  73.  
  74. }
  75.  
  76.  
  77.  
  78.  

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #1 en: Lunes 6 de Noviembre de 2006, 02:30 »
0
la funcion es toupper() y esta en la libreria ctype, si quieres pasar a minusculas es tolower() ;)

Tootsie

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #2 en: Lunes 6 de Noviembre de 2006, 02:41 »
0
He modificado lo siguiente en mi código, pero me sigue saliendo en minúsclas:

Código: Text
  1.  
  2. #include <ctype.h>
  3.  
  4. ...
  5. int i;
  6. ...
  7.  
  8.  
  9.  
  10.    do {
  11.  
  12.                memset(mensaje,0x0,TAMBUFFER);
  13.  
  14.                for(i=0; i<strlen(mensaje); i++) mensaje[i]=toupper(mensaje[i]);
  15.  
  16.                         result = recv(ID_socket_ser2, mensaje, TAMBUFFER, 0);
  17.  
  18.                
  19.  
  20.                if (result<0) {
  21.  
  22.                            printf("error\n");
  23.  
  24.                            exit(-1);
  25.  
  26.                }
  27.  
  28.                else
  29.  
  30.                {
  31.  
  32.                            printf("%s\n",mensaje);
  33.  
  34.                }
  35.  
  36.    } while(strncmp(mensaje,"fin",3));
  37.  
  38.  
  39.  
  40.  
  41.  
  42.    return 0;
  43.  
  44.  
  45.  

¿qué hago mal?

pabloreda

  • Miembro MUY activo
  • ***
  • Mensajes: 125
    • Ver Perfil
    • http://www.reda4.org
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #3 en: Lunes 6 de Noviembre de 2006, 12:35 »
0
estas pasando a mayuscula y despues recibiendo el buffer..

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #4 en: Lunes 6 de Noviembre de 2006, 15:32 »
0
Deberías hacer esto:
Código: Text
  1. result = recv(ID_socket_ser2, toupper(mensaje), TAMBUFFER, 0);
  2.  
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #5 en: Lunes 6 de Noviembre de 2006, 15:42 »
0
Cita de: "Angel_K_ido"
Deberías hacer esto:
Código: Text
  1. result = recv(ID_socket_ser2, toupper(mensaje), TAMBUFFER, 0);
  2.  
¿Probaste a compilar eso? La respuesta anterior, de pabloreda, da en el clavo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #6 en: Lunes 6 de Noviembre de 2006, 15:52 »
0
Es verdad.....

Pido PERDÓN  :unsure:.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #7 en: Lunes 6 de Noviembre de 2006, 15:56 »
0
Cita de: "Angel_K_ido"
Es verdad.....

Pido PERDÓN  :unsure:.
Tampoco es para pedir perdon che  ;)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pasar Mensaje De Minúsclas A Mayúsculas
« Respuesta #8 en: Lunes 6 de Noviembre de 2006, 16:06 »
0
Digo la verdad.

Tantos lenguajes me están mareando, existe otra sentencia que pasa a mayuscula una frase y lo primero que ví es que lo estaban haciendo caracter a caracter, ahora estuve viendo y resulta que toupper y tolower trabajan con caracteres.

Ahora me pregunto ¿En que lenguaje, con que sentencia y en que programa lo hice con una cadena?, no lo recuerdo.

Necesito un poco de aire.

 :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.