PDA

Visualizza la versione completa : problema client in c


luaneddra89
26-12-2014, 15:31
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


#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

Loading