Pideselo a la editorial... deviste haber revisado el libro a la hora de la compra...
Dulces Lunas!.
Dulces Lunas!.
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ú
#define SIZE_RUT 15
#define SIZE_NAME 15
#define SIZE_SURNAME 15
//typedef struct DataClient_ DATACLIENT, *LPDATACLIENT;
//typedef struct Node NODE, *LPNODE;
typedef
struct DataClient_
{
char szRut[SIZE_RUT];
char szName[SIZE_NAME];
char szSurName[SIZE_SURNAME];
}
DATACLIENT, *LPDATACLIENT;
typedef
struct Node_
{
DATACLIENT dataClient;
Node_* lpNext;
}
NODE, *LPNODE;;
/*
///No le veo utilidad a esta estructura...
typedef
struct LIST
{
Nodo *lpBEGIN;
}
LIST, *LPLIST;
*/
void unloadNodes(LPNODE lpNode)
{
if (!lpNode)
return;
unloadNodes(lpNode->lpNext);
fprintf(stdout, "%s\n", lpNode->dataClient.szName); // Antes de descargas mostramos...
free(lpNode);
}
int main()
{
LPNODE lpNodeFirst = (LPNODE)malloc(sizeof(NODE));
LPNODE lpNodeNow = lpNodeFirst;
int i = 0;
for (i = 0; i < 10; ++i)
{
memset(lpNodeNow->dataClient.szName, 0, (SIZE_NAME - 1));
fgets(lpNodeNow->dataClient.szName, (SIZE_NAME - 1), stdin);
lpNodeNow->lpNext = (i < 9) ? (LPNODE)malloc(sizeof(NODE)): NULL;
lpNodeNow = lpNodeNow->lpNext;
}
/// Descargar TODOS los Nodos empesando desde el ultimo.
unloadNodes(lpNodeFirst);
return EXIT_SUCCESS;
}
char szReaderBuffer[255];
memset(szReaderBuffer, 0, 255); // No es necesario pero yo siempre lo hago...
fgets(szReaderBuffer, 255, stdin); // Escaneamos la entrada de datos NO IMPORTA SI HAY ESPACIOS... solo importa la longitud!¡.
fprintf(stdout, "%s\n", szReaderBuffer);// Imprimimos.
// fflush(stdout); // Forzamos la salida de datos... Solo si hay errores...
return EXIT_SUCCESS;
Cita de: ignorantev1.1 en 1 Diciembre 2011, 21:54 PM
Perfecto @Иōҳ...
Saludos!
/***
CallBack RequestData
-> Esta clase es friend de CSockBase, CSockClient y CSockServer.
***/
void*
myCallDataArrival
(
void* p // Puntero a la clase Base CSockBase
)
{
char* szBuff = NULL;
char* szNewBuff = NULL;
int iRetSize = 0;
LPCSOCKBASE t = (LPCSOCKBASE)p;
if (!t)
{
t->threadDataArrival = {};
pthread_exit(NULL);
return NULL;
}
szBuff = new char[t->uiBuffRcv];
do
{
iRetSize = recv(t->mySock, szBuff, t->uiBuffRcv, 0);
if (iRetSize == SOCKET_ERROR || iRetSize == 0 ) // ¿Se ha desconectado el Socket?...
break; // Exit do|while(1)
szNewBuff = new char[t->udtBuffRcv.size + iRetSize];
memcpy(szNewBuff, t->udtBuffRcv.szData, t->udtBuffRcv.size);
memcpy(&szNewBuff[t->udtBuffRcv.size], szBuff, iRetSize);
delete t->udtBuffRcv.szData;
t->udtBuffRcv.szData = szNewBuff;
t->udtBuffRcv.size += iRetSize;
if (t->pEventDataArrival != NULL)
{ //Activacion del evento de Recepcion de Datos...
pthread_mutex_lock(&t->mutexDataArrival); // Bloquemos para que no se creen mas de los necesarios.
t->pEventDataArrival(t); // evento Volatile
pthread_mutex_unlock(&t->mutexDataArrival); // Habilitamos.
}
}
while(1);
t->close();// Cerramos...
if (t->pEventClosed)
t->pEventClosed(t);
t->threadDataArrival = {};
pthread_exit(NULL);
return NULL;
}
Cita de: soyloqbuskas en 22 Diciembre 2011, 02:22 AM
Pero al final con el codigo de BlackZeroX (Astaroth) me ha funcionado perfectamente. Lo unico que del codigo hay que cambiar 2 null por false.
voidProcessMessages()
{
MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL) != -1)
DispatchMessage(&msg);
}