Hi,
I compiled with no error a C program, than I tryed to execute it and than I get this error:
connessione al server fallita: Address family not supported by protocol family
What does it mean?
Why I get this error only on Mac os x while on Ubuntu the program works?
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\);
}