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

Rispondi quotando