



















by Jose Solares on Sep.03, 2008, under Uncategorized
Esto es una pequeña prueba desde blogwriter en el iphone. A ver que tal funciona con textpattern.
by Jose Solares on Nov.15, 2005, under Uncategorized
Despues de hacerlo es realmente facil, pero la documentacion existente en linea es cercana a nada.
Supongamos que tenemos un SDK que queremos utilizar en VC++, en mi caso queria desarrollar una aplicacion con soporte para Avaya CTI, al instalar el SDK de TSAPI de avaya, tenemos los dos directorios que nos interesan, Hdrs donde estan todos las librerias a incluir, y Libs donde estan los archivos a incluir en la compilacion.
Podemos hacer 2 cosas.
1. Copiarlos a los directorios estandares de Visual C++
2. Agregarlos al proyecto, e incluir el directorio Libs en las opciones de compilacion.
Para la opcion 1:
Tendriamos que copiar los *.h que tenemos al directorio Program Files\Microsoft Visual Studio 8\VC\include
los *.bin en el directorio Program Files\Microsoft Visual Studio 8\VC\lib
Luego en las propiedades de nuestro proyecto, en Configuration Properties -> Linker -> Input, en Additional dependencies debemos agregar en el caso de los TSAPI csta32.lib y attprv32.lib.
Y simplemente agregamos #include
Para la opcion 2:
Agregar todos los .h a nuestro proyecto, Agregar el directorio donde estan los .lib en Linker -> General, Additional Library Directories, y tambien agregar los .lib en las dependencias adicionales.
La ventaja de la opcion 1 es que si necesitamos desarrollar varias aplicaciones utilizando este SDK unicamente debemos de agregarlo en Additional dependencies, sin tener que estar agregando cada .h a nuestro proyecto.
by Jose Solares on Jun.01, 2005, under Linux
char buffer[RCVBUFFER + 2];
buffer[RCVBUFFER] = 0;
char response[] = {2,6,1,0,7,1,0,2,1,6,0x81};
int message_size,i,j;
char counter = 0;
if (( message_size = recv(client_socket, buffer,
RCVBUFFER, 0)) < 0 )
err_handler ("recv() failed");
if ( message_size == 17 ) {
if ( send(client_socket, response, 11, 0) != 11 )
err_handler ("send() failed");
} else {
printf ( "- %d - \n", message_size );
err_handler ("Protocol Error");
}
printf ("Starting...\n");
for (;;) {
if (( message_size = recv(client_socket, buffer,
RCVBUFFER, 0)) < 0 )
err_handler ("recv() failed");
counter = ( buffer[0] == -128
&& message_size > 5 )? buffer[3] : counter;
i = (buffer[0] == -128)? 5 : 0;
buffer[message_size + 1] = '\0';
buffer[message_size] = '\n';
//printf ("Capturing %d bytes\n",message_size);
fprintf (stderr, "%s",&buffer[i]);
//printf ("Current Counter : %d\n",counter);
if (message_size == 1) {
if (buffer[0] == 0x50) {
char respond[] = {0x51};
if ( send (client_socket, respond, 1, 0) != 1)
err_handler("send() failed");
}
} else {
i = message_size - 1;
if (buffer[i-2] == 0x20 && buffer[i-1] == 0x0d &&
buffer[i] == 0x0a) {
char respond[] = {0x40, 0x05, 0x01, ++counter, 0x81};
if ( send (client_socket, respond, 5, 0) != 5 )
err_handler("send() failed");
}
}
/* Do Something with the Data we received */
}
by Jose Solares on Jun.01, 2005, under Linux
No encontre ninguna aplicación en linux que pudiera utilizar para un proyecto en el trabajo, por lo que armado de ethereal y RDTT en Windows hize una ingenieria reversa
Esta especificacion caracteriza a un Server de RDT ver codigo de ejemplo aca
Para iniciar una conexion el cliente de RDT nos envia un paquete de 17 bytes, para seguir recibiendo datos que el cliente nos enviara debemos responder con :
byte response[] = {2, 6, 1, 0, 7, 1, 0, 2, 1, 6, 0x81};
Luego recibimos los datos:
definimos un checksum que el cliente espera recibir de la siguiente manera :
( buffer[ 0 ] = = -128 && msize > 5 )?buffer[ 3 ]:0;
o
( buffer[ 0 ] = = 0x80 && msize > 5 )?buffer[ 3 ]:0;
dependiendo del OS que utilicemos.
buffer es char * donde recibimos la data con recv o read
msize es int donde tenemos la cantidad de bytes leidos
el checksum lo enviamos al cliente al recibir `200d0a` al final de un paquete utlizando una respuesta char[]
{0x40, 0x05, 0x01, ++checksum, 0x81};
RDT tiene algo similar al ping de IRC, periodicamente nos envia un paquete de 1 byte con 0x50, esperando que le enviemos un paquete de 1 byte con 0x51
Espero que les sirva esta información
by Jose Solares on Mar.08, 2005, under Asterisk
Para hacer uso de esta aplicacion en asterisk es necesario bajarla al directorio apps en el source de asterisk, tambien se debe modificar el Makefile de dicho directorio para que incluya esta aplicacion, puede ser util tambien la aplicacion WaitForSilence que esta incluida en la version HEAD del cvs de asterisk.
by Jose Solares on Mar.07, 2005, under Uncategorized
Clase para Encripcion en C# utilizando TripleDES
Esta clase funciona en VS.NET 2003, se puede modificar para utilizar otro tipo de encripcion, seria de modificar el constructor para cambiar que tipo de encripcion se desea utilizar.
Use the form below to search the site:
Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!
All entries, chronologically...