gpt4 book ai didi

linux - 如何知道 sockatpair 的 SOCK_DGRAM 对等套接字何时关闭?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:13 25 4
gpt4 key购买 nike

#include <sys/socket.h>
int main() {
int s[2];
socketpair(AF_UNIX, SOCK_STREAM, 0, s);

close(s[1]);
char buf;
read(s[0], &buf, 1);
}

完成,但使用 SOCK_DGRAM 它会挂起。

如何知道何时不再有消息?为什么在对等 FD 关闭时“读取”不返回类似 ECONNRESET 的内容?

最佳答案

SOCK_DGRAM 和 SOCK_STREAM 之间的区别在于前者是无连接的,这意味着除其他外,没有连接“状态”传达给通信的另一端。因此,没有那个套接字被另一方关闭的概念。监听服务器仍然有一个可以接收数据报的有效端点,即使在这种情况下它恰好是匿名的,因此没有其他人可以找到它来向它发送数据。

如果你想有连接状态信息,你想使用SOCK_STREAM。

参见,例如,this thread ,其中讨论了一个非常相似的问题。

关于linux - 如何知道 sockatpair 的 SOCK_DGRAM 对等套接字何时关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488011/

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