Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448

    [C] FindWindow mi ritorna sempre NULL

    Nel mio programma che simula un servizio di posta elettronica sto scrivendo il codice per non consentire che un utente effettui un login se risulta già loggato.
    Per fare questo ho pensato di far creare al server un array dove inserisce gli username degli utenti che man mano si loggano, in questo modo se si prova a fare un nuovo login con lo stesso nome utente si ha in risposta che l'utente è già loggato perché presente nell'array utentiLoggati. Tutto questo funziona.
    Il problema nasce nel momento in cui un utente chiude il suo client.
    Devo fare in modo che il suo nome venga rimosso dall'array utentiLoggati.
    Ho pensato di risolvere impostando come titolo della console del client l'username di chi la sta usando, in tal modo controllando ciclicamente gli handle delle finestre aperte (il programma si usa in locale) riesco a vedere se il client è ancora aperto oppure è stato chiuso.
    Il server legge l'array degli utenti loggati e per ogni posizione controlla se esiste una console aperta con il nome trovato come titolo, ma FindWindow ritorna sempre NULL, anche se una console con il nome che sta cercando è aperta.

    codice:
    for(i = 0; i < MAX_UTENTI; i++) {
        if(FindWindow(NULL,utentiLoggati[i]) == NULL) {
            printf("Utente controllato: %s\n",utentiLoggati[i]);
            strcpy(utentiLoggati[i]," ");
            i = MAX_UTENTI;
            utentiOn--;
        }
    }
    printf("Utente controllato: %s\n",utentiLoggati[i]);
    riporta il nome contenuto nell'array ed è uguale a quello della console aperta, quindi FindWindow non dovrebbe ritornare NULL, ma un handle valido, perché non lo fa?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Facciamo un passo indietro ... quando il client si collega al server, nel tuo programma userai un socket ... come mai non lavori attorno a quel codice per capire quando il client e' disconnesso?

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Il programma che sto scrivendo deve utilizzare mailslot poiché è a scopo didattico.
    Un tale controllo è possibile anche con questo sistema di comunicazione tra processi?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Con una mailslot potresti tentare una comunicazione e intercettare l'errore.

    Mostra il codice ed indica qualcosa in piu' dell'esercizio ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.