claudia_brontola (Normal User)
Rookie
Messaggi: 40
Iscritto: 06/11/2012
|
Questo topic č stato chiuso dal moderatore 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
|