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 - Eternal Idol

#1711
Programación C/C++ / Re: problemilla en c++
6 Septiembre 2013, 08:48 AM
De nadas  ::)
#1712
No tengo tu codigo pero inverti un poco mas de esfuerzo y prueba y error por tu cuenta y seguro que logras hacerlo funcionar.
#1713
No existe la variable pTcpTable (asi se llama el primer parametro de la funcion GetExtendedTcpTable).
#1714
Es ERROR_INSUFFICIENT_BUFFER, incluyendo windows.h ya te deberia funcionar.
#1715
No tiene mucho sentido hacer ese bucle, como te dije la funcion te devuelve el tamaño que necesita, ir aumentando en 64 (un valor arbitrario), reservar y liberar memoria es poco optimizado.

En el campo dwNumEntries de la estructura MIB_TCPTABLE_OWNER tenes la cantidad de elementos en la tabla. Con eso podes hacer el array facilmente.
#1716
Programación C/C++ / Re: FILE y funcion fwrite()
5 Septiembre 2013, 20:07 PM
¿Estas en Windows? Usa stdout (siempre).
#1717
Esto esta mal:
if (hTransfer == INVALID_HANDLE_VALUE)

Return value
Returns a handle if successful, or NULL otherwise. To retrieve a specific error message, call GetLastError.

FtpOpenFile esta fallando, ahora segui vos.
#1718
Depuralo y fijate que devuelve cada funcion (y el GetLastError cuando corresponda).

PD. No abras mas hilos, todos son sobre lo mismo y el proximo lo borro.
#1719
La misma funcion te devuelve el tamaño necesario:

pdwSize [in, out]
The estimated size of the structure returned in pTcpTable, in bytes. If this value is set too small, ERROR_INSUFFICIENT_BUFFER is returned by this function, and this field will contain the correct size of the structure.

DWORD size = 0;
DWORD dwResult = GetExtendedTcpTable(NULL, &size, false, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0);
if (dwResult == ERROR_INSUFFICIENT_BUFFER)
{
 PVOID table = malloc(size);
 dwResult = GetExtendedTcpTable(table, &size, false, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0);
 if (dwResult == NO_ERROR)
 {
   PMIB_TCPTABLE_OWNER_PID tabla = (PMIB_TCPTABLE_OWNER_PID)table;
 }
 free(table);
}


Y la estructura tambien esta en la documentacion:
TCP_TABLE_CLASS enumeration

TCP_TABLE_OWNER_PID_ALL
A MIB_TCPTABLE_OWNER_PID or MIB_TCP6TABLE_OWNER_PID structure that contains all TCP endpoints on the local computer is returned to the caller.
#1720
El problema ahi es el uso de gets en primer lugar, aca esta explicado:
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Usando un puntero igual tenemos un limite, siempre hay que reservar la memoria para ese  puntero en algun lado, asi que el problema en si es usar una funcion como gets que no permite especificar el tamaño de nuestro buffer.