gpt4 book ai didi

c - Unix 套接字的 sockaddr_un.sun_path 区分大小写吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:26 26 4
gpt4 key购买 nike

struct sockaddr_un serverUNIXAddress;

以下代码在 Mac OS 10.9 下有效,但在 Linux 下无效。它不会死,但从客户端写入服务器,只能在 Mac OS 下工作。我完全理解它不应该适用于任何一个。为什么它在 Mac OS 下工作?如果没有发现错误,这是套接字实现中的错误,还是难以移植的特性?

客户端.c

//Server domain
serverUNIXAddress.sun_family = AF_UNIX;

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

服务器.c

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

最佳答案

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

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

我假设 Linux 支持不区分大小写的文件系统。如果您使用其中之一并在其上创建套接字文件,则匹配将不区分大小写。

关于c - Unix 套接字的 sockaddr_un.sun_path 区分大小写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com