从阅读PHP手册,socket_recv和socket_read函数看起来 对我来说,两个函数都从客户端获取数据。
任何人都能告诉我这两个功能有什么不同吗?
答案 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.