salve a tutti ho appena iniziato a studiare l ambiente client server in c... stavo realizzando un programma semplice sullo scambio di messaggi ma mentre il server funziona, il client mi da al terminale un errore di segmentazione.
Vi posto il codice in attesa di un vostro aiuto
codice:
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<netinet/in.h>
#include<stdlib.h>

#define MAX 5000

#define PORT 4000

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


// PROGRAMMA PRINCIPALE

int main(int argc,char*argv[])
{

    char buff[MAX]; // dati di invio e ricezione
    int sd;
    struct sockaddr_in server_addr;
    struct sockaddr_in mio_addr;
    int mio_addr_len = sizeof(mio_addr);
    int error;

//inizializza l indirizzo ip del server
    addr_initialize(&server_addr,PORT,inet_addr(argv[1]));
// creo l identificatore del socket
    sd = socket(AF_INET,SOCK_STREAM,0);

// crea una connessione sul socket appena creato
error = connect(sd,(struct sockaddr*)&server_addr, sizeof(server_addr));

// controllo se la connect() e andata a buon fine

if(error==0)
{
// se la connessione ha avuto successo stampa su schermo connessione eseguita
    printf("\nHo eseguito la connessione con successo\n");
    //**************
    send(sd,"dati inviati dal client",strlen("dati inviati dal client"),0);
    recv(sd,buff,sizeof(buff),0);
    printf("risposta del server:%s\n",buff);
    close(sd);
    exit(0);
}


}//main