SOCK_STREAM和SOCK_SEQPACKET的区别

4

我已经阅读了 PHP 手册上这两种通信类型的定义,但是确实我在理解某些段落时遇到了困难,所以需要您的帮助。

以下是 PHP 手册中这两种类型的定义:

SOCK_STREAM 提供序列化、可靠的、全双工的、基于连接的字节流。可能支持带外数据传输机制。TCP 协议基于此套接字类型。

SOCK_SEQPACKET 提供一个定长数据报的序列化、可靠的、双向基于连接的数据传输路径;每次读取调用都需要消费者读取整个数据报。

但是我真的不理解为什么会使用 全双工的、基于连接的字节流定长数据报的序列化、可靠的、双向基于连接的数据传输路径 这些词语,并且我真的不知道 双向 连接和 全双工 连接之间有什么区别。

我有些困惑,所以需要您的帮助。 谢谢大家。

1个回答

5

全双工意味着它能够同时发送和接收数据进行通信。

不过,手册在这里有些误导;套接字类型并不能保证通信的效率,只是规定了可以在其上执行哪些操作。

从我的socket(2)手册中得知:

   SOCK_STREAM     Provides sequenced, reliable, two-way, connection-based byte streams.  An out-of-band  data  transmission
                   mechanism may be supported.

   SOCK_SEQPACKET  Provides  a  sequenced,  reliable, two-way connection-based data transmission path for datagrams of fixed
                   maximum length; a consumer is required to read an entire packet with each input system call.

但是“双向”是什么意思呢? - Mohamad Haidar
某些套接字类型只允许发送或接收,而不是两者都允许。 - Mark Nunberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接