SOCK_STREAM VS SOCK_SEQPACKET

时间:2014-07-06 23:18:55

标签: sockets network-programming

我已经从PHP手册中读到了这两种通信的定义,但实际上我在理解某些段落时遇到了问题,所以我需要你的帮助。

这些定义适用于PHP手册:

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

SOCK_SEQPACKET 为固定最大长度的数据报提供有序,可靠,双向连接的数据传输路径;消费者需要在每次读取呼叫时读取整个数据包。

但实际上我无法理解为什么它使用了全双工,基于连接的字节流基于双向连接的数据传输路径,用于固定最大长度的数据报而且我真的不知道 双向 连接和 全双工 连接。

我有点困惑,所以我需要你的帮助。 谢谢每个人。

1 个答案:

答案 0 :(得分:4)

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

虽然这本手册在这里有误导性;套接字类型不能保证通信的效率,而只是对它们执行哪种操作。

来自我的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.