ciao a tutti, ho buttato giù l'esercizio però non so se è giusto, qualcuno potrebbe darmi qualche suggerimento? grazie mille!
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 4000
#define IP "127.0.0.1"
int main(){
struct sockaddr_in server_addr;
int server_addr_len=sizeof(server_addr);
int PORT1=PORT;
char STRINGA[30];
char NUM[11]; //stringa per memorizzare il numero di tentativi
int sd,i,err,tentativi=0;
//init addr
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons((u_short)PORT1);
server_addr.sin_addr.s_addr=inet_addr(IP);
//end init
sd=socket(AF_INET,SOCK_STREAM,0);
err=connect(sd,(struct sockaddr*)&server_addr,server_addr_len);
if(err<0){
printf("errore: connessione\n");
return 1;
}
else printf("connessione riuscita"); // qui deve arrivarci perchè il port me lo da il testo
while(PORT1!=-1){ // parte il ciclo while
i=0;
do{
err=recv(sd,&STRINGA[i],1,0);
if (err<0) { printf("errore in recv: errore ricezione: err<0\n");
return 1;
}
if (err==0) { printf("errore in recv: chiusura connessione: err==0\n");
return 1;
}
i++;
}while(STRINGA[i-1]!='\n');
printf("stringa ricevuta\n");
PORT1=atoi(STRINGA); //aggiorno il port
printf("stringa convertita\n");
if (PORT1==-1) {
printf("stringa convertita: PORT == -1\n");
break;
}
printf("stringa convertita\n");
printf("cambio il port e tento la connessione...\n");
//init addr
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons((u_short)PORT1);
server_addr.sin_addr.s_addr=inet_addr(IP);
//end init
err=connect(sd,(struct sockaddr*)&server_addr,server_addr_len);
if(err<0){
printf("errore: connessione\n");
tentativi++;
break;
}
else {
printf("connessione riuscita");
break;
}
}//fine ciclo while
printf("ciclo completato invio il numero di tentativi...\n");
sprintf(NUM,"%d\n",tentativi);
err=send(sd,NUM,strlen(NUM),0);
if (err<0) { printf("errore in send: err<0\n");
return 1;
}
else printf("numero tentativi inviati...termino\n\n");
close(sd);
return 1;
}
l'ho compilato e non dovrebbero esserci errori di sintassi, il problema è la semantica.
grazie ciao