Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#201
.
Usa el buscador, esto ya esta en otros Post.

Totorial Winsock

* Usa un poco de lógica, si te dice "Operacion no valida en el estado actual." entonces ¿Por que no rectificas el estado actual del socket y realizas dicha acción?, algunos casos que dan este problema son: El socket esta en escucha, enviando informacion, esta cerrado, etc.

En el evento Error del socket te saltan estas constantes.

Código (vb) [Seleccionar]


Constante                      Valor   Descripción
sckOutOfMemory                  7      Sin memoria
sckInvalidPropertyValue         380    El valor de la propiedad no es válido.
sckGetNotSupported              394    No se puede leer la propiedad.
sckSetNotSupported              383    La propiedad es de sólo lectura.
sckBadState                     40006  Protocolo o estado de conexión incorrecto para la solicitud o la transacción requerida.
sckInvalidArg                   40014  El argumento que se pasó a una función no estaba en el formato correcto o en el intervalo especificado.
sckSuccess                      40017  Correcto.
sckUnsupported                  40018  Tipo Variant no aceptado.
sckInvalidOp                    40020  La operación no es válida en el estado actual.
sckOutOfRange                   40021  El argumento está fuera del intervalo.
sckWrongProtocol                40026  Protocolo erróneo para la solicitud o la transacción requerida.
sckOpCanceled                   10004  Se canceló la operación.
sckInvalidArgument              10014  La dirección solicitada es una dirección de multidifusión, pero el indicador no está activado.
sckWouldBlock                   10035  El socket es no bloqueante y la operación especificada se bloqueará.
sckInProgress                   10036  Se está efectuando una operación de Winsock bloqueante.
sckAlreadyComplete              10037  Se completó la operación. No se están efectuando operaciones bloqueantes.
sckNotSocket                    10038  El descriptor no es un socket.
sckMsgTooBig                    10040  El datagrama es demasiado grande para el búfer y se truncará.
sckPortNotSupported             10043  El puerto especificado no es compatible.
sckAddressInUse                 10048  Dirección en uso.
sckAddressNotAvailable          10049  La dirección no está disponible en la máquina local.
sckNetworkSubsystemFailed       10050  Error en el subsistema de red.
sckNetworkUnreachable           10051  El host no puede encontrar la red en este momento.
sckNetReset                     10052  Expiró el tiempo de espera de la conexión antes de establecer SO_KEEPALIVE.
sckConnectAborted               10053  La conexión se ha cancelado al sobrepasar el tiempo de espera o por otro error.
sckConnectionReset              10054  La conexión se ha restablecido desde el lado remoto.
sckNoBufferSpace                10055  No hay espacio disponible en el búfer.
sckAlreadyConnected             10056  El socket ya está conectado.
sckNotConnected                 10057  El socket no está conectado.
sckSocketShutdown               10058  El socket se ha desactivado.
sckTimedout                     10060  Se ha sobrepasado el tiempo de conexión.
sckConnectionRefused            10061  Se ha forzado el rechazo de la conexión.
sckNotInitialized               10093  Es necesario llamar primero a WinsockInit.
sckHostNotFound                 11001  Respuesta autorizada: host no encontrado.
sckHostNotFoundTryAgain         11002  Respuesta no autorizada: host no encontrado.
sckNonRecoverableError          11003  Errores no recuperables.
sckNoData                       11004  Nombre válido; no hay registro de datos del tipo solicitado.



Dulces Lunas!¡.
#202
Programación C/C++ / Re: [AYUDA] Con lista en C
13 Diciembre 2012, 07:15 AM
Te dejo una pequeña libreria que hace ya unos meses atras me cree para tratar listas de manera mas generica en C.

list.h


#ifndef CSLIST_H_INCLUDED
#define CSLIST_H_INCLUDED

#include <stdbool.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdint.h>

typedef
enum {
    LIST_CMP_EQUAL          = 0x0,
    LIST_CMP_LESS_THAT      = 1,
    LIST_CMP_GREATER_THAT   = -1
} list_cmp_t;

typedef enum {
    LIST_SORT_ASC,      /* Indica que se copiaran los elemento antes del elemento indicado. No usar en conjunto de LIST_COPY_RIGHT. */
    LIST_SORT_DESC      /* Indica que se copiaran los elementos despues del elementos indicado. No usar en conjunto de LIST_COPY_LEFT. */
} list_sort_t;

typedef void*               list_t;
typedef list_t*             list_ptr_t;
#define LIST_NULL           NULL

typedef intptr_t            list_value_t;
typedef list_value_t*       list_value_ptr_t;
#define LIST_VALUE_NULL     NULL

typedef list_value_ptr_t    list_item_t;
typedef list_item_t*        list_item_ptr_t;
#define LIST_ITEM_NULL      NULL

typedef size_t              list_size_t;
typedef list_size_t*        list_size_ptr_t;

/** Definición de callback que se encarga de crear un duplicado del list_value_t indicado en el parámetro value.
* @param value: list_value_t que se duplicara.
* @return Retorna el elemento list_value_t duplicado del parámetro value.
*/
typedef
list_value_t(*list_callback_clone_item)
(const list_value_t value);

/** Definición de callback que se encarga de destruir la memoria asignada al list_value_t.
* @param value: list_value_t que se liberara.
*/
typedef
void(*list_callback_release_item)
(const list_value_t value);

/** Definición de callback que se encarga comparar dos list_value_t.
* @param value1: list_value_t que se comparara con value2.
* @param value2: list_value_t que se comparara con value1.
* @return Retorna el resultado de la comparación.
*    LIST_CMP_LESS_THAT: Si value1 < value2.
*    LIST_CMP_EQUAL: Si value1 == value2.
*    LIST_CMP_GREATER_THAT: Si value1 > value2.
*/
typedef
list_cmp_t(*list_callback_compare_item)
(const list_value_t value1,
const list_value_t value2);

/** Crea una nueva lista de elementos list_value_t.
* @param clone_item: Apuntador a la función callback que retornara la copia del valor a asignar.
* @param release_item: Apuntador a la función callback que liberara la copia del valor duplicado en el list_callback_clone_item.
* @param clone_item: Apuntador a un proceso callback que se encarga de comparar los list_item_t.
* @return Retorna la nueva cola de datos queue_t que debera ser destruida con list_release().
*/
list_t
list_allocator(list_callback_clone_item clone_item,
               list_callback_release_item release_item,
               list_callback_compare_item compare_item);

/** Función que destruye una lista.
*/
void
list_release(list_t list);

/** Función que remueve TODOS los elementos de la lista.
* @return Retorna la cantidad de elementos removidos de la lista.
*/
list_size_t
list_clear(list_t list);

/** Función que agrega n cantidad de elementos repetidos (value) a la lista, reemplazando los existentes.
* @param list: Lista en la que se agregara value n veces.
* @param n: Cantidad de valores a agregar a la lista.
* @param value: Valor a agregar n veces a la lista.
* @return Retorna el primer elemento agregado; NULL si no se a agregado ningun elemento.
*/
list_item_t
list_assign(list_t list,
            list_size_t n,
            list_value_t value);

/** Función que agrega un elemento al final de la lista.
* @param list: lista a la cual se le agregara un elemento nuevo.
* @param value: Valor a agregar a la lista.
* @return Retorna el item en la lista.
*/
list_item_t
list_pushback(list_t list,
              list_value_t value);

/** Función que agrega un elemento al inicio de la lista.
* @param list: Lista a la cual se le agregara un elemento nuevo.
* @param value: Valor a agregar a la lista.
* @return Retorna el item en la lista.
*/
list_item_t
list_pushfront(list_t list,
               list_value_t value);

/** Función que agrega un elemento en la lista antes de un elemento indicado.
* @param item: Elemento pivote que esta dentro de una lista.
* @param value: Valor a agregar a la lista antes del pivote.
* @return Retorna el item en la lista.
*/
list_item_t
list_pushprev(list_item_t item,
              list_value_t value);

/** Función que agrega un elemento aen la lista despues de un elemento indicado como pivote.
* @param item: Elemento pivote que esta dentro de una lista.
* @param value: Valor a agregar a la lista despues del pivote.
* @return Retorna el item en la lista.
*/
list_item_t
list_pushnext(list_item_t item,
              list_value_t value);


/** Función que obtiene la lista a la cual pertenece un item.
* @param list: Lista de la cual se obtendra su primer elemento list_item_t.
* @return Devuelve la lista list_t a la cual pertenece dicho item; NULL si no pertenece a ninguna lista.
*/
list_t
list_getlist(list_item_t item);

/** Función que obtiene el primer elemento de una lista.
* @param list: Lista de la cual se obtendra su primer elemento list_item_t.
* @return Devuelve el primer list_item_t de la lista.
*/
list_item_t
list_begin(list_t list);

/** Función que obtiene el ultimo elemento de una lista.
* @param list: Lista de la cual se obtendra el ultimo elemento list_item_t.
* @return Devuelve el ultimo list_item_t de la lista.
*/
list_item_t
list_back(list_t list);

/** Función que verifica si una lista esta vacia.
* @param list: Lista que se verificara.
* @return Retorna:
*  True: si la lista esta vacia.
*  False: Si contiene por lo menos un elemento.
*/
bool
list_empty(list_t list);

/** Función que retorna el item anterior al inicado.
* @param item: Item pivote en la lista.
* @return Retorna el list_item_t anterior al indicado; NULL si no hay ningun item.
*/
list_item_t
list_before(list_item_t item);

/** Función que retorna el item siguiente al inicado.
* @param item: Item pivote en la lista.
* @return Retorna el list_item_t siguiente al indicado; NULL si no hay ningun item.
*/
list_item_t
list_after(list_item_t item);

/** Función que busca un valor a partir de un pivote indicado dentro de una lista.
* @param item: Elemento pivote desde el cual se empresara a buscar el valor indicado en value.
* @param value: Valor a buscar en la lista apartir de el pivote indicado.
* @return Retorna NULL si no se a encontrado dentro de la lista en caso
* contrario retorna el elemento .
*/
list_item_t
list_findnext(list_item_t item,
              list_value_t value);

/** Función que busca un valor a partir de un pivote indicado dentro de una lista.
* @param item: Elemento pivote desde el cual se empresara a buscar el valor indicado en value.
* @param value: Valor a buscar en la lista antes de el pivote indicado.
* @return Retorna NULL si no se a encontrado dentro de la lista en caso
* contrario retorna el elemento .
*/
list_item_t
list_findprev(list_item_t item,
              list_value_t value);

/** Función que intercambia los valores entre dos elementos cuales quiera, inclusive entre listas.
* @param item1: Elemento involucrado en el intercambio.
* @param item2: Elemento involucrado en el intercambio.
* @return Retorna TRUE si no hubo errores y FALSE si no se puedo intercambiar los dos elementos.
*/
bool
list_swap(list_item_t item1,
          list_item_t item2);

/** Función que elimina un list_item_t de su lista.
* @param item: Elemento que se extraera de su lista.
*/
void
list_erase(list_item_t item);

/** Función que mezcla dos listas generando una nueva lista que debera ser liberada con list_release().
* @param list1: Los elementos de esta lista se agregaran al inicio.
* @param list2: Los elementos de esta lista se agregaran al seguidos de los de list1.
* @return Retorna una nueva lista que contendran las copias de las dos listas espesificadas.
*/
list_t
list_join(list_t list1,
          list_t list2);

/** Función que retorna la cantidad de elementos en la lista.
* @param list: Lista de la cual se retornaran la cantidad de elementos almacenados en ella.
*
* @return Retorna la cantidad de elementos en la lista.
*/
list_size_t
list_size(list_t list);

/** Función que copia los elementos de una lista a otra.
* @param dst: Elemento pivote en donde se se hubicaran los elementos a copiar desde src.
* @param src: Elemento pivote de una lista que se le clonaran sus elementos para agregarlos en la lista destino dst.
* @param n: Cantidad máxima de elementos que copiaran.
*
* @return Retorna la cantidad de elementos agregados en la listda dst.
*/
list_size_t
list_copy(list_item_t dst,
          list_item_t src,
          list_size_t n);

/** Función que clona por completo una lista.
* @param list: Lista que será clonada.
*
* @return Retorna una nueva lista que debera ser liberada con list_release().
*/
list_t
list_clone(list_t list);

/** Función que ordena los elementos de una lista.
* @param list: lista que se ordenara.
* @param sort: Indica el modo en el que serán ordenados los elementos
* LIST_SORT_ASC/LIST_SORT_DESC:
*/
void
list_sort(list_t list,
          list_sort_t sort);

#endif // CSLIST_H_INCLUDED



Descargar


#define LOOP 1
...

uint32_t min(uint32_t a, uint32_t b) {
    return (a<b) ? a:b;
}

void swap(int32_t *a, int32_t *b) {
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

int randomnumber(int32_t lower, int32_t upper) {
    if (min(lower, upper) != lower) {
        swap(&lower, &upper);
    }
    return lower + rand() % ((upper + 1) - lower);
}

...

    list_t      list = list_allocator(NULL, NULL, NULL);
    list_item_t item = LIST_ITEM_NULL;

    for (int k = 0; k <= LOOP; ++k) {

        puts("Eliminando datos.");
        list_clear(list);
        puts("Lista limpia.\n");
        puts("Ingresando datos.");
        for (uint_fast32_t i = 0; i <= 10000000; ++i) {
            list_pushback(list, randomnumber(i, i));
        }
        puts("fin de insercion de los datos.\n");
    /*
        for (item = list_begin(list); item != NULL; item = list_after(item))
            printf("%7.0d\t", (int)*item);
        printf("\n");
    */
        puts("Ordenando datos.");
        list_sort(list, LIST_SORT_ASC);
        puts("Fin de ordenacion de los datos.\n");
    /*
        for (item = list_begin(list); item != NULL; item = list_after(item))
            printf("%7.0d\t", (int)*item);
        printf("\n");
    */
    }
    list_release(list);



Dulces Lunas!¡.
#204
en lugar de

scanf("%s",respuesta);

usa

scanf("%c",&respuesta);
o usa respuesta = getchar();

Aun que te recomiendo que mejor implementes esto: http://foro.elhacker.net/programacion_cc/para_que_dejeis_de_preguntar_de_una_vez_por_los_menus-t276719.0.html

Dulces Lunas!¡.
#205
De hecho el router no comprueba los puertos en un lookback desde tu red al que pertenece el ruteador, al menos que haya otro ruteador conectado a ese router... perdón no te leí completamente.

Aun así puedes comprobar si tu programa puede aceptar conexiones o datos por los puertos especificados: ScanX

Nota: Algunos ruteadores tienen una opción para los DNS de NOIP (el mio tiene esa opción de manera nativa) explora sus opciones.

Dulces Lunas!¡.
#206
Si la noip apunta a tu ip y desde de esa ip es una de tus computadoras ( nat loopback ) solo abre el archivos host y agrega en este la DNS apuntando a tu IP local (Es una alternativa claro esta).

Dulces Lunas!¡.
#208
getattr() ? o lo quede seas es ver si el archivo te pertenece? o algo similar?

Dulces Lunas!¡.
#209
LeandroA había creado un User Control el cual si no mal recuerdo tenia esta opción (Del cual yo cree mi ListViewEx 2.0), ya que este listItem creo que carece de tal función (puedes expandirla con subclasificación).

Dulces Lunas!¡.
#210
Programación C/C++ / Re: ayuda con tipos QT
20 Noviembre 2012, 02:30 AM
usa static_cast

Código (cpp) [Seleccionar]


qint32 numeroEnEntero(0);
qreal numeroEnReal(4.54);

numeroEnEntero = static_cast<qint32>(numeroEnReal);



también puedes usar la clase QVariant...

http://doc.qt.digia.com/qt/qvariant.html#convert
http://doc.qt.digia.com/qt/qvariant.html#Type-enum


Dulces Lunas!¡.