gpt4 book ai didi

c - Unix 域 SOCK_DGRAM 和 SOCK_SEQPACKET 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 09:58:10 27 4
gpt4 key购买 nike

根据 Unix 套接字的 Linux 手册页,“UNIX 域中的有效套接字类型是…… SOCK_DGRAM,用于保留消息边界的面向数据报的套接字(与大多数 UNIX 实现一样,UNIX 域数据报套接字始终是可靠的并且不'不重新排序数据报);和(从 Linux 2.6.4 开始)SOCK_SEQPACKET,用于面向连接的序列数据包套接字,保留消息边界,并按照消息发送的顺序传递消息。” (http://man7.org/linux/man-pages/man7/unix.7.html)。

我认为“始终可靠且不重新排序数据报”与“按照发送顺序传递消息”相同。

SOCK_DGRAM 和 SOCK_SEQPACKET 之间的实际区别是什么?

最佳答案

在 UNIX 域套接字的上下文中,两者之间的主要区别是“面向数据报”与“面向连接”。

在 SOCK_DGRAM 的情况下,您不创建连接(例如到服务器),您只需将数据包发送到服务器套接字。如果服务器需要回复,您需要创建自己的套接字,让服务器知道这个套接字,然后服务器可以向它发送回复。非常不方便,如果你真的需要连接,但当你只需要单向通信时很有用,即发送一些通知。

SOCK_SEQPACKET 是要走的路,当您需要面向连接的方法时。

关于c - Unix 域 SOCK_DGRAM 和 SOCK_SEQPACKET 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61562593/

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