Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP socket_recv和socket_read_Php - Fatal编程技术网

PHP socket_recv和socket_read

PHP socket_recv和socket_read,php,Php,通过阅读PHP手册,socket_recv和socket_read函数 和我一样,这两个函数都从客户端获取数据 有谁能告诉我这两个函数之间有什么不同吗?socket\u recv返回接收到的字节数 socket\u read返回已接收的数据 使用socket\u recv可以从缓冲区读取字节,并知道接收了多少字节。使用socket\u read只能从缓冲区读取特定数量的数据: 2.18。read()和recv()之间有什么区别 来自安德鲁·吉尔斯(andrew@erlenstar.demon.c

通过阅读PHP手册,socket_recv和socket_read函数 和我一样,这两个函数都从客户端获取数据


有谁能告诉我这两个函数之间有什么不同吗?

socket\u recv
返回接收到的字节数
socket\u read
返回已接收的数据

使用
socket\u recv
可以从缓冲区读取字节,并知道接收了多少字节。使用
socket\u read
只能从缓冲区读取特定数量的数据

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

来自安德鲁·吉尔斯(andrew@erlenstar.demon.co.uk):

read()相当于recv(),flags参数为0。其他
flags参数的值会更改recv()的行为。
类似地,write()相当于send(),其标志=0

一种阻塞功能,它允许函数等待直到使用socket_recv接收到数据,但通过使用socket_read,它假定已经接收到字节,并且不会等待,因此它可能不会返回任何内容:

Note:

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

似乎
socket\u recv
是一个具有更多控制的低级函数,
socket\u read
是一个更简单的高级函数,具有更少的控制请求PHP函数,unix read()不返回字符串。您的链接还声明read()必须返回0,而PHP套接字_read()返回0data@barts这和什么有什么关系?php函数在php内部调用这些函数
PHP_函数(socket_read)
使用0个标志调用
recv
,而
PHP_函数(socket_recv)
使用在PHP中传递的标志调用
recv
。这可以是,但这不是OP问的问题,我的意思是OP想知道这两个函数的区别,而不是它们的相似之处internally@barts但是因为PHP除了调用那些内部函数外几乎不做任何工作,内部函数之间的差异与薄包装之间的差异相对相同。PHP的
socket\u read
使用
0
作为标志,而使用
socket\u recv
可以设置标志,这与内部函数的区别相同。这是正确的答案。另一个充其量是令人困惑的。所有的答案一起构成了Megazord答案。
Note:

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