2010-10-29 36 views
0

沒有錯誤以下工作在OSX 10.6,但在使用SDK 4.1有誰知道ios4是否支持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: "); 
    } 
} 

誤差

任何想法「家庭地址協議族不支持」 iPhone模擬器失敗?

回答

0

你真的需要檢查襪子 - 很有可能,套接字的創建已經失敗了。

我的猜測是AF_UNIX/SOCK_DGRAM不支持;請嘗試SOCK_STREAM。

+0

謝謝 - 我重新運行它檢查「襪子」,它是一個有效的套接字。考慮到受限制的文件系統訪問,您可能是對的,因爲它不受支持。 SOCK_STREAM以同樣的方式失敗。 – jsheehy 2010-10-29 21:11:11

+0

我建議嘗試socketpair(2)。如果失敗了,你知道AF_UNIX可能不被支持。如果成功,您可以使用getsockname來找出AF_UNIX的合法名稱。 – 2010-10-29 22:06:30