draco86 Inviato 26 Aprile 2008 Segnala Condividi Inviato 26 Aprile 2008 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); } http://www.ask-for-advice.eu Link al commento Condividi su altri siti Altre opzioni di condivisione...
draco86 Inviato 27 Aprile 2008 Autore Segnala Condividi Inviato 27 Aprile 2008 Nessuno sà dirmi come eliminare quel messaggio d'errore? http://www.ask-for-advice.eu Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.