• Domingo 25 de Octubre de 2020, 14:37

Autor Tema:  Como saber si una variable contiene octetos??  (Leído 3014 veces)

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Como saber si una variable contiene octetos??
« en: Martes 25 de Enero de 2011, 13:10 »
0
Muy buenas, existe algun metodo en C++ para determinar si una variable de tipo string contiene o es un octeto??.. No se si mi pregunta esta bien formulada, en sintesis lo que necesito es hacer es algo como:

mientras (no sea final del string(string)) {
Si (string.in() == OCTETO) {
hacer esto y lo otro.. }
else {
no hacer nada }
...
}

El string, es un IOR (interoperable object reference) de CORBA. Pero necesito saber si el contenido es realmente lo que dice ser..

Gracias de ante mano.. Saludos!!!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como saber si una variable contiene octetos??
« Respuesta #1 en: Martes 25 de Enero de 2011, 14:17 »
0
No sé a qué te refieres con octeto. Octeto es un byte en castellano. A lo mejor te quieres referir a otra cosa...

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #2 en: Martes 25 de Enero de 2011, 14:53 »
0
Si, evidentemente me exprese mal, bueno.. El tema es que tengo una o variable tipo string y quiero saber si contiene el IOR CORBA dentro.. Mas o menos tiene algo asi:
IOR:000000000000001649444c3a43756269745...  Bueno, creo que la mejor opcion seria parsear y buscar los primeros 3 caracteres y compararlo si es IOR, no se? es lo mas simple segun lo veo.. Porque no se como corroborar que realmente la variable string tiene un IOR del tipo CORBA..

•Parra

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #3 en: Martes 25 de Enero de 2011, 17:46 »
0
Quieres saber si tu string contiene otro string que es estatico siempre, dentro de el, independientemente del tamaño que sea el primer string. Es eso no?

Lo quieres en C o en C++?

PD: No se que es "un IOR de tipo COBRA"..

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #4 en: Martes 25 de Enero de 2011, 18:30 »
0
Hola gracias por responder...

Bueno, el IOR (interoperable object reference) es el que contiene la info requerida del objetos del servidor para que el cliente contacte con el. En realidad es un string variable, ya que cada vez que el servidor cae, este crea su IOR único que el cliente necesita saber para comunicarse con el. Este IOR contiene una secuencia de dígitos hexadecimales ( Ej: miior.ior contiene  IOR:000000000000000D49444C3A677269643A312E30000E7E4A00000001000000000000003200010000000000056A696D690000EA610000001EB54160B6B541646147726964537276B5424F41B541646147726964537276 )  Aquí esta el IP, el puerto y toda la info necesaria para alcanzar al los sirvientes (objetos) del servidor.

Yo lo que quería pillar, "en C++", la forma de saber si el string que recibo es o no un IOR. Lo que se me pasa por la mente es parsear los primeros 3 caracteres y ver si es "IOR" (ya que estos caracteres son los únicos que siempre se repiten.) O al menos que haya otra forma?.. Pasa que recibo, entre otros, strings de otros tipos, por ejemplo una URL, etc.

•Parra

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #5 en: Martes 25 de Enero de 2011, 19:46 »
0
De acuerdo, entonces es muy facil, te dejo la función, ok?

Código: C++
  1.  
  2. bool CheckIOR(const string str)
  3. {
  4.    if (str.substr(0, 3) == "IOR")
  5.    {
  6.          // en el caso de que los tres primeros caracteres sean igual a IOR, devolvemos true
  7.          return true;
  8.    }
  9.  
  10.    return false;
  11. }
  12.  

Por el parametro tienes que pasar el string completo, y la función ya lo chequea, acuerdate de poner en el .hpp, o .h (como prefieras), el include este:
Código: C++
  1. #include <string>
  2.  

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #6 en: Martes 25 de Enero de 2011, 19:55 »
0
Si, magnifico Parra... Esa es la única opción que la veo ya que el string varia siempre, pero el "IOR:" nunca.. Ahora me toca ver si ACE posee alguna API similar a tu código :) ACE y TAO CORBA lo maximo!!.. Recomendado para aplicaciones distribuidas :)

Saludos y Gracias por todo!!!...

•Parra

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #7 en: Martes 25 de Enero de 2011, 19:57 »
0
Cita de: "Mc_Gregor"
Si, magnifico Parra... Esa es la única opción que la veo ya que el string varia siempre, pero el "IOR:" nunca.. Ahora me toca ver si ACE posee alguna API similar a tu código :) ACE y TAO CORBA lo maximo!!.. Recomendado para aplicaciones distribuidas :)

Saludos y Gracias por todo!!!...
Que vendria a ser ACE y TAO COBRA? Nunca en mi vida lo he escuchado xD

Si tienes alguna otra duda, no dudes en preguntarla.

Otra cosa, que haces para "parsear" la parte de despues de "IOR:"? O alguna libreria que estás usando ya se encarga de hacerlo?

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #8 en: Martes 25 de Enero de 2011, 20:21 »
0
CORBA es una arquitectura para peticiones entre objetos distribuidos, TAO es una implementacion de CORBA... Si Parra, estoy desarrollando un sitema distribuido: Servicio, Servidores y Clientes que interactuan entre si. Utilizo como una herramienta de apoyo la librería librdf que es para parsear documentos RDF, nodos, tripletas, etc.. Osea, en síntesis un sistema distribuido ontológico. :)

Saludos y gracias de nuevo!!...

•Parra

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #9 en: Martes 25 de Enero de 2011, 21:25 »
0
Cita de: "Mc_Gregor"
CORBA es una arquitectura para peticiones entre objetos distribuidos, TAO es una implementacion de CORBA... Si Parra, estoy desarrollando un sitema distribuido: Servicio, Servidores y Clientes que interactuan entre si. Utilizo como una herramienta de apoyo la librería librdf que es para parsear documentos RDF, nodos, tripletas, etc.. Osea, en síntesis un sistema distribuido ontológico. :)

Saludos y gracias de nuevo!!...
Interesante!

De nada hombre, nos vemos!

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #10 en: Miércoles 26 de Enero de 2011, 12:13 »
0
Hola, adjunto la solución (Para CORBA, TAO, ACE - C++)
Simple como esto:

      ACE_TCHAR* str = ACE_OS::strrchr (string_recibido, ACE_TEXT('IOR'));
        if (str) {
                  cout << "Esta string contiene el IOR: " << string_recibido << endl;
                }
........... Sigue su cause normal

y al final no utilice el (substr) recomendado por Parra porque tenia que convertir strings a chars y chars a string luego (por causa de la utilidad que le dare luego al string que contiene el IOR)...

Bueno, simple, conciso y listo..
Gracias por las respuestas y cualquier duda, también me quedo por aquí..

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #11 en: Miércoles 26 de Enero de 2011, 12:46 »
0
Aun mejor queda asi:
PARA TAO CORBA:

      ACE_TCHAR* ior_match = ACE_OS::strstr (string_recibido, ACE_TEXT("IOR:"));
          if (ior_match) {
                             cout << "Este string contiene el IOR: " << string_recibido << endl;
                    }

PARA C++

char* ior_match = std::strstr (string_recibido, "IOR:");
          if (ior_match) {
                             cout << "Este string contiene el IOR: " << string_recibido << endl;
                    }

 :comp:   Seguimos..
« última modificación: Miércoles 26 de Enero de 2011, 12:50 por Mc_Gregor »

•Parra

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #12 en: Miércoles 26 de Enero de 2011, 12:49 »
0
Cita de: "Mc_Gregor"
Aun mejor queda asi:

      ACE_TCHAR* ior_match = ACE_OS::strstr (string_recibido, ACE_TEXT("IOR:"));
          if (ior_match) {
                             cout << "Este string contiene el IOR: " << string_recibido << endl;
                    }

.
.
.
.
. Curso normal del programilla..
 :comp:   Seguimos..
Perfecto, si tu libreria te da soporte para strings, mucho mejor usarlo, que no el genérico, asi te olvidas de problemas de compatibilidad.

Mc_Gregor

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como saber si una variable contiene octetos??
« Respuesta #13 en: Miércoles 26 de Enero de 2011, 13:15 »
0
Eso mismo Parra, alli modifique el codigo arriba e inclui para C++ ya que el foro este es C++...

Saludos!!