Ciao a tutti..chi mi da una mano?
Vi posto il codice di questo semplice server che dovrebbe fare da calcolatrice, per ora ho provato solo con la somma..ma non fa il totale..cosa sbaglio? probabilmetne nella dichiarazione di int tot, ma non riesco a capire come fare visto che io gli invio dal client una stringa e non un numero alla volta..
Grazie mille!

codice:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>

#define PORT 10000
#define MAXCONN 5
#define DIMBUFF 10

void addr_initialize();

void addr_initialize(struct sockaddr_in *indirizzo, int port, long IPaddr)
{
   indirizzo->sin_family = AF_INET;
   indirizzo->sin_port = htons((u_short) port);
            /* htons: host to network conversion, short */
   indirizzo->sin_addr.s_addr = IPaddr;
}

int main(int argc, char * argv[])
{
   int  sd,new_sd;
   struct sockaddr_in server_addr;
   struct sockaddr_in client_addr;
   int client_len=sizeof(client_addr);
   char inbuf [DIMBUFF];
   char *carattere,*numero;
   int posizione;
   int *n1,*n2;
   int tot;
   char *stringa_send;
   stringa_send=calloc(20,sizeof(char));
   char terminatore[2]={'\0','\n'};

   addr_initialize(&server_addr, PORT, INADDR_ANY);
   sd=socket(AF_INET,SOCK_STREAM,0);
   bind(sd,(struct sockaddr*) &server_addr,sizeof(server_addr));
   listen(sd,MAXCONN);
   while (1)
      {
      printf("\nMi pongo in attesa di richieste di connessione\n");
      new_sd=accept(sd,(struct sockaddr*) &client_addr, &client_len);
      printf("Ho accettato una connessione ");
      printf("dal client con port: %d\n", ntohs(client_addr.sin_port));
      do
         {
         recv(new_sd,&inbuf,DIMBUFF,0);
         printf("\nHo ricevuto i seguenti parametri %s\n", inbuf);
	
	 n1=calloc(20,sizeof(int));
   	 n2=calloc(20,sizeof(int));
   	carattere=strchr(inbuf,'+');
   	posizione=carattere-inbuf;
   	strncpy(n1,inbuf,posizione);
   	numero=strpbrk(carattere,"1234567890");
   	strcpy(n2,numero);
   	printf("%s\n%s\n",n1,n2);

	 tot=n1+n2;     
	    printf ("il totale dell'operazione e' %d", tot);
		printf ("invio il totale al client \n");
		sprintf (stringa_send, "%d\0\n", tot); 
	send (new_sd, stringa_send, 3, 0);
	send(new_sd,terminatore,2,0);}
	    
	 while (inbuf!='q');
      close(new_sd);
      printf("\nChiudo la connessione\n");
   }
   
   close(sd);
}