Il codice del server funziona, ma il client mi da un errore di segmentazione.
Vi posto il codice in attesa di un vostro aiuto
Codice: Seleziona tutto
#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;
addr_initialize(&server_addr,PORT,inet_addr(argv[1]));
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);
return EXIT_SUCCESS;
}
else{
printf("\nerrore di connessione\n");
}
}