Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
22/11/12 20:43
claudia_brontola
questo è cio che ho nel client..



char postistr[TEXT_LENGTH];
     int numposti;
     puts("inserisci il numero di posti da prenotare";);
     errore=scanf("%s",postistr);
    
     if(verificastringa(postistr)!=-1)
     {
            numposti=atoi(postistr);
     }
     else numposti=-1;
     if(numposti<=0|| numposti>127)
     {
            puts("Errore:    numero posti inserito non valido.al max è possibile prenotare 127 posti,SALA PERMETTENDO";);
     }
     else
     {
        
         leggiposti(conn_s,numposti);
     }
    
     break;



codice leggiposti :

void leggiposti(SOCKET conn,int numposti) // permette di prenotare uno o più posti
{
    char msg[1000];
    msg[0]=2;
    msg[1]=(char) numposti;
    int t=0;
    while(t<numposti)
    {
            int q=0;
            char posto[TEXT_LENGTH];
            puts("\ninserisci il numero della fila";);

            while(q<=0 || q>127)
            {
                    errore=scanf("%s",posto);

                    if(errore<0)
                        {
                            if(WSAGetLastError()==WSAEINTR)
                                    {
                                    printf("Errore nella scanf";);
                                    SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                                    exit(-1);// uscita
                                    }
                        }

            if(verificastringa(posto)!=-1)
                {
                        q=atoi(posto); // converte stringa in intero
                }
            else
                    q=-1;
                    if(q<=0 || q>127)
                        puts("\n\nErrore:numero fila inserito non valido.inserisci il numero fila";);
            } // chiusura del while

            msg[2+(t*2)]=(char)q;

            puts("\ninserisci il numero del posto";);
            q=0;

            while( q<=0 || q>127)
            {
                    errore=scanf("%s",posto);
                    if(errore<0)
                    {
                        if(WSAGetLastError()==WSAEINTR)
                        {
                            printf("Errore nella scanf";);
                            SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                            exit(-1);// uscita
                        }
                    }

                if(verificastringa(posto)!=-1)
                {
                        q=atoi(posto);
                }
                else
                    q=-1;

                    if(q<=0||q>127)
                        puts("\n\nErrore:numero posto inserito non valido.inserisci il numero di posto";);
            }

            msg[2+(t*2)+1]=(char)q;
            ++t;
    } // chiudo while controllo su t
    if(conn<0)
        printf("impossibile connettersi \n";);
    int errore=send(conn,msg,(numposti*2)+2,0);

    if (errore<0)
    {
        if(WSAGetLastError()==WSAEINTR)
                {
                printf("errore nella send";);
                SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                exit(-1);// uscita
                }
    }
    
    char risp[7];
    int q=0;

    while(q<numposti)
    {
            memset(risp,0,sizeof(risp));
            errore=recv(conn,risp,sizeof(risp),0);
            if(errore<0)
            {
                    if(WSAGetLastError()==WSAEINTR)
                    {
                    printf("errore nella recv";);
                    SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                    exit(-1);// uscita
                    }
            }

        if(risp[0]=='E')
        {
                errore=printf("\nil posto %d,%d è occupato\n", risp[5],risp[6]);
                if(errore<0)
                {
                        if(WSAGetLastError()==WSAEINTR)
                        {
                            printf("errore nella printf";);
                            SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                            exit(-1);// uscita
                        }
                }
        }
        else
            if(risp[0]=='Y')
                {
                        errore=printf("\n\nil posto %d,%d non è disponibile nella sala\n", risp[5],risp[6]);
                        if(errore<0)
                        {
                            if(WSAGetLastError()==WSAEINTR)
                            {
                            printf("errore nella printf";);
                            SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                            exit(-1);// uscita
                            }
                        }
                puts("\ncontrollare le dimensioni max della sala tramite la funzione visualizza";);
            }
            else
                    errore=printf("\nil posto %d,%d è stato prenotato con codice %s \n", risp[5],risp[6],risp);
                    if(errore<0)
                        {
                            if(WSAGetLastError()==WSAEINTR)
                            {
                            printf("errore nella printf";);
                            SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                            exit(-1);// uscita
                            }
                        }

            q++;
    } // chiudi la while controllo sulla q
}


nel server ho...


int t=0;
            char risp[7];
            int r=recv(conn,buffer,sizeof(buffer),0);
            if(r==0||r==-1)
            {
                    if(WSAGetLastError()==WSAEINTR)
                    {
                        SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                        exit(-1);
                    }
            }
            
            int numposti=(int) buffer[1];
            int s;
            
            while(t<numposti)
            {
                
                    s=occupaposto((buffer[2]),(buffer[3]));
                    risp[5]=buffer[2];
                    risp[6]=buffer[3];
                    if(s==-2)
                    {
                        //posto non disponibile
                            risp[0]='Y';
                            risp[1]='Y';
                            risp[2]='Y';
                            risp[3]='Y';
                    }
                    else
                        if(s==-1)
                        {
                                //posto è occupato
                            risp[0]='E';
                            risp[1]='E';
                            risp[2]='E';
                            risp[3]='E';
                        }
                        else
                        {
                                //posto libero
                            errore=sprintf(risp,"%d",s);
                            if(errore<0)
                            {
                                if(WSAGetLastError()==WSAEINTR)
                                {
                                        SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                                        exit(-1);
                                }
                            }
                        }
                        int errore=send(conn,risp,sizeof(risp),0);
                        if (errore<0)
                        {
                            if(WSAGetLastError()==WSAEINTR)
                            {
                                printf("errore nella send";);
                                SendMessage(HWND_BROADCAST,my_mex_type,0,0);
                                exit(-1);// uscita
                            }
                        
                        }
                        t++;
            } //chiude il while

                
                
            }
        break;

il codice occupaposto non lo metto .. è molto semplice e sopratt l'errore non è li...

l'errore che non capisco è xke dopo che faccio send(conn,risp,sizeof(risp),0)

nella recv che ho nel client.. non mi riceve questi valori... ma caratteri strani..a volte "server" a volte "avvio"..

dove commetto errori??? non riesco a vederli :(

aaa
23/11/12 8:14
HeDo
Questo topic è in violazione di una o più norme del regolamento: pierotofy.it/pages/extras/forum/9/3839-regolamento/ .
    
Dopo averlo letto riapri un nuovo topic assicurandoti di aver rispettato le regole. Grazie per la tua pazienza.
aaa