Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - debug_assertion_failed
Forum - C/C++ - debug_assertion_failed

Avatar
claudia_brontola (Normal User)
Rookie


Messaggi: 40
Iscritto: 06/11/2012

Segnala al moderatore
Postato alle 10:25
Giovedý, 08/11/2012
quando avvio il server mi da questo errore..


debug_assertion_failed e mi chiede se interrompere.. ignorare o riprovare...

cosa mi indica questo errore?? grazie in anticipo per la risposta



..Si ritorna solo andando via ..
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:44
Giovedý, 08/11/2012
In quale riga di codice?


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
PM Quote
Avatar
claudia_brontola (Normal User)
Rookie


Messaggi: 40
Iscritto: 06/11/2012

Segnala al moderatore
Postato alle 10:58
Giovedý, 08/11/2012
mi da cosi..

file:f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c

line:94

espressione nptr!= NULL



..Si ritorna solo andando via ..
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:50
Giovedý, 08/11/2012
Devi postare il *tuo codice* in cui si manifesta l'errore.

In particolare, dove usi la funzione

strtol


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
PM Quote
Avatar
claudia_brontola (Normal User)
Rookie


Messaggi: 40
Iscritto: 06/11/2012

Segnala al moderatore
Postato alle 14:55
Giovedý, 08/11/2012
ok arriva...


int _tmain(int argc,char * argv[])
{
    //definizioni variabili

    SOCKET list_s,conn_s;
    short int port;
    struct sockaddr_in server;
    struct sockaddr_in their;
    char buffer[MAX];
    char * endPtr;
    int sin_size;
    WSADATA wsaData;
    DWORD nThread;
    HWND hWind;
    WNDCLASS wndClass;
    MSG msg;
    HANDLE th;
    

    puts("# PRENOTAZIONE CINEMA SERVER #");
    puts(" Avvio server.....");


    // registrazione messaggi di errore

    my_mex_type=RegisterWindowMessage((LPCWSTR)message);
    if(!my_mex_type)
    {
            printf("error");
            exit(-1);
    }

    mex=RegisterWindowMessage((LPCWSTR)stop);
    if(!mex)
    {
            printf("error");
            exit(-1);
    }

    //inizializzazione WindClass per gestione segnali

    wndClass.style= CS_HREDRAW | CS_VREDRAW ; // stile della finestra

    wndClass.lpfnWndProc=WndProc; //funzione che funge da handler per tutti i segnali

    wndClass.cbClsExtra=0; //byte da allocare per esigenze programmatore

    wndClass.cbWndExtra=0; //come sopra

    wndClass.hInstance=NULL; //handler all'istanza del processo lanciato

    wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); // handler icona da utilizzare

    wndClass.hCursor=LoadIcon(NULL,IDC_ARROW); //handler a cursore da usare in finestra

    wndClass.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH); //handle al pennello di background

    wndClass.lpszMenuName=NULL; // nome da usare per il men¨

    wndClass.lpszClassName=(LPCWSTR)"server"; //nome associato alla finestra


    //inizializzazione RegisterClass & finestra per la ricezione segnali



    if(!(RegisterClass(&wndClass)))
    {
            printf("errore nella registrazione della classe");
            fflush(stdout);
            exit(-1);
    }

    /* senza la creazione di questa finistra NON visibile,non si potrebbe ricevere segnali */

    hWind =CreateWindow((LPCWSTR)"server", (LPCWSTR)"Gestione",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,NULL,NULL);
    if(hWind==INVALID_HANDLE_VALUE)
    {
            printf("server: errore nella creazione finestra");
            fflush(stdout);
            exit(-1);
    }

    // interpretazione riga di comando

    ParseCmdLine(argc,argv,&endPtr);

    //creazione socket

    /*strtol convert un char in un long int */

    port= strtol(endPtr,&endPtr,0);

    if(*endPtr)
    {
            fprintf(stderr,"server: porta non riconosciuta");
            exit(EXIT_FAILURE);
    }

    printf("server: in ascolto sulla porta %d \n", port);

    /*wsStartup inizializza l'utilizzazione delle Windows Socket */

    if( WSAStartup (MAKEWORD (1,1) , &wsaData) !=0)
    {
        printf("errore in WSA startup");
            exit(EXIT_FAILURE);
    }

    /* creazione socket*/

    if((list_s=socket (AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
    {
            fprintf(stderr,"server:errore apertura socket"); //flusso di errore Ŕ la destinazione per per i messaggi di errore
            exit(EXIT_FAILURE);
    }

    //bind e listen su socket

    /*memset setta i primi n bytes della locazione puntata dal puntatore passato (nel nostro caso i bytes sono sizeof(buffer) e il puntatore &server) */

    memset(&server,0,sizeof(server));

    server.sin_family=AF_INET;
    server.sin_addr.s_addr=htonl(INADDR_ANY);
    server.sin_port=htons(port);

    //effettua la bind sull'indirizzo e la porta ora assegnate

    if(bind(list_s,(struct sockaddr *)&server, sizeof(server))==SOCKET_ERROR)
    {
            fprintf(stderr,"server: errore nella bind");
            exit(EXIT_FAILURE);
    }

    //mette la socket in ascolto tramite la listen

    if(listen(list_s, LISTENQ)==SOCKET_ERROR)
    {
        fprintf(stderr,"server:errore nella listen");
        exit(EXIT_FAILURE);
    }

    //creazione file

    file =CreateFile((LPCWSTR)"codici",GENERIC_READ,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);

    //loop

    while(1)
    {
            //attende una nuova connessione tramite la accept

        sin_size=sizeof(struct sockaddr_in);
        if((conn_s=accept(list_s,(struct sockaddr *)&their,&sin_size))==INVALID_SOCKET)
        {
                fprintf(stderr, "server: errore nella accept");
                exit(EXIT_FAILURE);
        }

        printf("server: connessione da %s \n", inet_ntoa(their.sin_addr));

        //thread per la comunicazione con client

        th=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) receiveThread,(LPVOID) conn_s,NORMAL_PRIORITY_CLASS,&nThread);

        //loop per la ricezione dei messaggi

        while(PeekMessage(&msg,hWind,0,0,PM_REMOVE))
        {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }
    }
}



..Si ritorna solo andando via ..
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:32
Giovedý, 08/11/2012
Il valore in ingresso di

endPtr

della strtol non pu˛ essere NULL.

Controlla il risultato della  ParseCmdLine


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
PM Quote