cerco di spiegare un pò il mio problema..prima che divento matta..

client :

codice:
case '2':
	   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;
ecco il codice di leggiposti


codice:
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 :


codice:
case '2':
			{
			recv(conn,buffer,sizeof(buffer),0);
			int t=0;
			char risp[7];
			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

				int err=send(conn,risp,sizeof(risp),0);
				if(err<0)
				{
					if(WSAGetLastError()==WSAEINTR)
							{
								printf("errore nella send");
								SendMessage(HWND_BROADCAST,my_mex_type,0,0);
								exit(-1);// uscita
							}
				}
				send(conn,"\n",strlen(buffer),0);
				caricamappa();
			}
		break;
usando il brekpoint ho che il client invia bene i valori..
mi passa il controllo sul server .. che fino a occupaposto funziona...
dopo occupa posto salvo tutto ciò che occorre su risp e invio con la send..

ma qui nn passa di nuovo il controllo sulla socketclient in modo tale che può legge ciò che ho scritto.. ma è come se le due parti nn stiano + in comunicazione..

e così sul client viene stampato un sms non di eerrore ma di valori che nn so proprio dove prende..

cosa mi sfugge ????