io non ho problemi di quel tipo..fino a li è tt ok ...
ecco il mio codice..del client
codice:
int main(int argc, char * argv[])
{
SOCKET conn_s;
short int port;
struct sockaddr_in server;
char buffer[MAX];
char *szAddress;
char *szPort;
char *endPtr;
struct hostent *he;
char choise;
u_long nRemoteAddr;
WSADATA wsaData;
he=NULL;
puts(" PRENOTAZIONE CINEMA CLIENT");
//interpretazione riga di comando
ParseCmdLine(argc,argv,&szPort,&szAddress);
//creazione del socket
port= strtol(szPort,&endPtr,0);
if(*endPtr)
{
printf("client:porta non riconosciuta \n");
system("PAUSE");
exit(EXIT_FAILURE);
}
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)
{
printf("errore in WSA startup");
exit(EXIT_FAILURE);
}
if((conn_s=socket(AF_INET,SOCK_STREAM,0))<0)
{
fprintf(stderr,"client :errore socket");
system("PAUSE");
exit(EXIT_FAILURE);
}
// Vuotiamo la struttura server e riempiamo i campi necessari */
memset(&server,0,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(port);
//connessione al server
/* Impostazione dell’indirizzo IP del server remoto */
nRemoteAddr = inet_addr(szAddress);
if (nRemoteAddr == INADDR_NONE)
{
printf("client: indirizzo IP non valido.\n");
if ((he=gethostbyname(szAddress)) == 0)
{
printf("connessione fallita.\n");
system("PAUSE");
exit(EXIT_FAILURE);
}
printf("connessione riuscita.\n\n");
nRemoteAddr = *((u_long *)he->h_addr_list[0]);
}
server.sin_addr.s_addr = nRemoteAddr;
//connect
if(connect(conn_s,(struct sockaddr *) &server,sizeof(server))==SOCKET_ERROR)
{
printf("client: errore durante la connect");
exit(EXIT_FAILURE);
}
k: while((choise=comunicazione(conn_s))=='r')
{
printf("client:reinserire numero giusto \n");
}
switch (choise)
{
case '0': exit(0);
break;
case '1':visualizzamappa(conn_s);
break;
case '2':
char postistr[TEXT_LENGTH];
int numposti;
puts("inserisciil numero di posti da prenotare");
errore=(scanf("%s",postistr));
if(errore<0)
{
if(WSAGetLastError()==WSAEINTR)
{
printf("errore nella scanf");
SendMessage(HWND_BROADCAST,my_mex_type,0,0);
exit(-1);// uscita
}
}
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( numposti,conn_s);
break;
case '3':disdici(conn_s);
break;
default: break;
}
printf("client:proseguire con un altra operazione? Y per si altro per no: ");
fgets(buffer,MAX,stdin);
if(buffer[0]=='y' || buffer [0]=='Y')
{
if(send(conn_s,"y",sizeof(buffer),0)==-1)
{
if(WSAGetLastError()==WSAEHOSTDOWN)
{
printf("client:errore nella send");
SendMessage(HWND_BROADCAST,my_mex_type,0,0);
system("PAUSE");
exit(-1);
}
}
system("PAUSE");
goto k;
}
system("PAUSE");
WSACleanup();
}
e del server :
codice:
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);