PHP socket_recv和socket_read

时间:2012-05-30 09:18:56

标签: php

从阅读PHP手册,socket_recv和socket_read函数看起来 对我来说,两个函数都从客户端获取数据。

任何人都能告诉我这两个功能有什么不同吗?

3 个答案:

答案 0 :(得分:11)

socket_recv返回收到的字节数 socket_read返回已收到的数据

使用socket_recv,您可以从缓冲区读取字节并知道已接收的字节数。使用socket_read,您只能从缓冲区中读取特定数量的数据

答案 1 :(得分:2)

来自http://www.faqs.org/faqs/unix-faq/socket/#b

  

2.18。 read()和recv()有什么区别?

     

来自Andrew Gierth(andrew@erlenstar.demon.co.uk):

     

read()相当于recv(),其flags参数为0.其他
  flags参数的值更改recv()的行为。
  类似地,write()等同于带有flags == 0的send()。

答案 2 :(得分:0)

MSG_WAITALL  Block until at least len are received. However, if a signal is caught or the remote host disconnects, the function may return less data.
MSG_DONTWAIT     With this flag set, the function returns even if it would normally have blocked.

一种阻塞功能,它会让函数等待直到接收到的数据当然是使用socket_recv,但是通过使用socket_read,它假设已经接收到的字节并且没有等待,所以它可能什么都不返回:

Note:

socket_read() returns a zero length string ("") when there is no more data to read.