2010-10-29 8 views
0

Les travaux suivants sans erreur sur Mac OS X 10.6, mais échoue dans le simulateur d'iPhone en utilisant SDK 4,1Est-ce que quelqu'un sait si ios4 prend en charge les sockets de domaine Unix?

#include <arpa/inet.h> 
#include <netdb.h> 
#include <sys/socket.h> 
#include <sys/stat.h> 
#include <netinet/tcp.h> 
#include <sys/un.h> 
#include <string.h> 

int main(void) { 

    int sock = socket(AF_UNIX, SOCK_DGRAM, 0); 

    struct sockaddr_un sock_addr; 

    memset(&sock_addr, 0, sizeof(struct sockaddr_un)); 

    sock_addr.sun_family = AF_UNIX; 
    strcpy(sock_addr.sun_path, "/tmp/sock"); 

    int err = bind(sock, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr_un)); 
    if(err == -1) { 
     perror("bind: "); 
    } 
} 

erreur est « famille d'adresses non pris en charge par la famille de protocole »

Toutes les idées?

Répondre

0

Vous avez vraiment besoin de vérifier la chaussette déjà - le plus probable, la création de socket est ce qui a déjà échoué.

Je suppose que AF_UNIX/SOCK_DGRAM n'est pas supporté; essayez plutôt SOCK_STREAM.

+0

Merci - Je l'ai re-couru vérifier "sock" et c'était une prise valide. Vous avez probablement raison de dire que ce n'est pas supporté, étant donné l'accès restreint au système de fichiers. SOCK_STREAM a échoué de la même manière. – jsheehy

+0

Je suggère d'essayer socketpair (2). Si cela échoue, vous savez que AF_UNIX n'est probablement pas supporté. Si cela réussit, vous pouvez utiliser getsockname pour connaître les noms légaux de AF_UNIX. –