|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
|
Address family not supported by protocol family
[C]
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[i]='\0'; len=strlen(buf); */ // Imposta buffer e len for(i=0; i<NR;i++) buffer[i]=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); } Ultima modifica di DNAx86 : 26-04-2008 alle 10:10. |
|
|
|
|
#2 |
|
Member
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
|
Nessuno sà dirmi come eliminare quel messaggio d'errore?
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:06.


















