2014-12-03 37 views
0

struct sockaddr_un serverUNIXAddress;是Unix套接字的,sockaddr_un.sun_path是否区分大小写?

以下代码适用于Mac OS 10.9,但不适用于Linux。它不会死亡,但是从客户端写入服务器,只能在Mac OS下运行。我完全明白,它不应该在任何工作。为什么它在Mac OS下工作?这是套接字实现中的一个错误,还是仅仅是一个特殊性,如果错误没有被捕获,就很难移植了?

client.c

//Server domain 
serverUNIXAddress.sun_family = AF_UNIX; 

//Server name 
strcpy(serverUNIXAddress.sun_path, "rockPaperScissors"); 

server.c

strcpy(serverUNIXAddress.sun_path, "RockPaperScissors"); 
//Create file 
bind(serverFd, serverSockAddrPtr, serverLen); 
//Maximum pending connection length 
listen (serverFd, 5); 
////[...] 

回答

2

一种UNIX域套接字文件在文件系统中创建的。 OS X上的默认文件系统不区分大小写。因此,客户端使用不区分大小写的匹配找到服务器的套接字。

您可以在OS X上使用区分大小写的文件系统。如果您在那里创建了套接字文件,那么匹配也会区分大小写。

我认为Linux支持不区分大小写的文件系统。如果你使用了其中的一个并在其上创建了套接字文件,那么匹配将不区分大小写。

相关问题