2010-10-29 78 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