Vai al contenuto

Ricarica la Pagina Address family not supported by protocol family


draco86

Messaggi raccomandati

Ho provato ad eseguire questo codice C, un programma Client, ottengo un errore:

connessione al server fallita: Address family not supported by protocol family

Che significa?

Che devo fare per eliminarlo?

Importante: Questo errore lo ottenuto su Mac OS X (BSD), invece lo stesso codice su Ubuntu (linux) funziona correttamente.

The code is:

/*

* EsameClient.c

*

*/

#include <stdlib.h>

#include <ctype.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define NR 3

#define MAXLENGTH 80

#define SERVER_PORT 1313

int main (unsigned argc, char **argv)

{

int sockfd;

struct sockaddr_in server={AF_INET,htons(SERVER_PORT),INADDR_ANY};

int i=0,len;

char buf[MAXLENGTH],c;

int buffer[NR], stato;

/* Controllo Parametri Passati da Terminale */

if(argc != 4) // argv[1] -> argv[3] sono le risorse

{

perror("Chiamata corretta del programma:\nnome-programma <risorsa1> <risorsa2> <risorsa3> \n<risorsai> deve essere un intero positivo");

exit(1);

}

/* impostazione del transport end point */

if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

perror("chiamata alla system call socket fallita");

exit(1);

}

/* connessione al server */

if(connect(sockfd,(struct sockaddr *)&server,sizeof server)==-1)

{

perror("connessione al server fallita");

exit(2);

}

/* ricezione e stampa a video del messaggio di benvenuto del server */

if(recv(sockfd,buf,27,0)>0)

{

buf[27]='\0';

printf("%s",buf);

}

else

{

perror("Connessione al server interrotta");

exit(3);

}

/* acquisizione della stringa da standard input */

/* while((c=getchar())!='\n' && i<MAXLENGTH)

buf[i++]=c;

buf='\0';

len=strlen(buf); */

// Imposta buffer e len

for(i=0; i<NR;i++)

buffer=argv[i+1];

len=sizeof(buffer); // size?? o # = 3/////////////////////////////////////////////////////

/* invio e ricezione della stringa */

if(send(sockfd,buffer,len,0)==-1) // Se send ritorna -1 = errore

{

perror("Errore nell'invio della richiesta risorse al server");

exit(4);

}

if(recv(sockfd,&stato,len,0)>0)

{

printf("%d\n",stato);

}

else

{

perror("Connessione al server interrotta");

exit(3);

}

/* chiusura della connessione */

close(sockfd);

}

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...