Salve a tutti, mi è stato assegnato questo "lavoretto", ossia di realizzare un server/client in C che svolgesse le seguenti operazioni.
Parte server:
- accettare connessione 1 da client e ricevere stringa da convertire in intero, questo numero rappresenta la porta di un client a cui ci si dovrà connettere
- ricevere attraverso connessione 1 una stringa, ed elaborarla, eliminando i numeri preceduti da A
Parte client:
- connettersi al client di dato IP e n°porta assegnato ed inviare il risultato dell'elaborazione
- infine inviare ad un terzo client il carattere "q" che indica la fine delle operazioni.

int sd, new_sd;
int dim;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int client_len = sizeof(client_addr);
char buffer[10];
char buffer2[64];
char mex,
int result;

/*PARTE SERVER*/

addr_initialize(&server_addr, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);
result = bind(sd, (struct sockaddr*) &server_addr, sizeof(server_addr));
result = listen(sd, MAXCONN);
new_sd = accept(sd, (struct sockaddr*) &client_addr, &client_len);

do {
recv( new_sd, buffer[i], 1, 0);
i++;
} while (buffer[i-1] != '\n');

port2=atoi(buffer);

/*PARTE 2 SERVER*/
i=0;

do {
recv( new_sd, buffer2[i], 1, 0);
i++;
} while (buffer2[i-1] != '\n');


/* PARTE CONTROLLO */

i=0;

while(buffer2[i]=='\n'){
if(((buffer2[i]>='1')&&(buffer2[i]<='9'))&&(buffer2[i-1]=='A'))){
c=buffer2[i+1];
buffer2[i]=c;
i++;
}
else i++;
}

/*PARTE CLIENT*/
sd2 = socket(AF_INET, SOCK_STREAM, 0);
addr_initialize(&server_addr, port2, inet_addr("IP"));
result = connect(sd2, (struct sockaddr*) &server_addr, sizeof(server_addr));

dim=sizeof(buffer2);

send(sd2, buffer2, dim,0);

close(sd);

close(new_sd);

close(sd2);

/*PARTE 2 CLIENT*/
sd3 = socket(AF_INET, SOCK_STREAM, 0);
addr_initialize(&server_addr, port2, inet_addr("IP"));
result = connect(sd3, (struct sockaddr*) &server_addr, sizeof(server_addr));

send(sd3, mex, 1 ,0);

close(sd3);
Io ho pensato di sviluppare il tutto in questo modo, vi volevo chiedere se secondo voi il codice può essere ottimizzato, oppure se c'è qualcosa che secondo voi va modificato.
Grazie