根据 Unix 套接字的 Linux 手册页,“UNIX 域中的有效套接字类型是 . . . SOCK_DGRAM,对于保留消息边界的面向数据报的套接字(与大多数 UNIX 实现一样,UNIX 域数据报套接字始终可靠且不可靠)不重新排序数据报);以及(自 Linux 2.6.4 起)SOCK_SEQPACKET,用于面向连接的排序数据包套接字,保留消息边界,并按照消息发送的顺序传递消息。” (http://man7.org/linux/man-pages/man7/unix.7.html http://man7.org/linux/man-pages/man7/unix.7.html).
我认为“始终可靠并且不会重新排序数据报”与“按照发送消息的顺序传递消息”相同。
SOCK_DGRAM 和 SOCK_SEQPACKET 之间的实际区别是什么?
在 UNIX 域套接字的上下文中,两者之间的主要区别是“面向数据报”与“面向连接”。
在 SOCK_DGRAM 的情况下,您不创建连接(例如到服务器),您只需将数据包发送到服务器套接字。如果服务器需要回复,您需要创建自己的套接字,让服务器知道这个套接字,然后服务器可以向它发送回复。如果您确实需要连接,则非常不方便,但当您只需要单向通信(即发送一些通知)时,这可能很有用。
当您需要面向连接的方法时,SOCK_SEQPACKET 是可行的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)