socket_read()中$ type参数的含义

时间:2012-03-15 23:24:02

标签: php sockets php-5.3 unix-socket

我尝试使用PHP套接字创建从c#app到PHP 5.3脚本的tcp / ip套接字连接。 c#app应该将JSON字符串发送到PHP脚本。

关于the socket_read manual的问题:他们的意思是什么:

"PHP_BINARY_READ (Default) - use the system recv() function.
Safe for reading binary data."

使用此参数时,PHP_BINARY_READ究竟是什么以及为什么要使用recv()函数?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

重要的部分是文档中关于其他选择的内容:

  
      
  • PHP_NORMAL_READ - 阅读在\n\r停止。
  •   

如果您的套接字是面向行的文本协议,请选择PHP_NORMAL_READ。如果您的套接字是其他内容,请选择PHP_BINARY_READ

答案 1 :(得分:3)

这意味着当您使用PHP_BINARY_READ时,将使用this system call从底层套接字读取。通过将其与reads

的替代方法进行对比来解释关于二进制数据安全性的评论
  

PHP_NORMAL_READ - 读取停在\ n或\ r。

因此,如果您想一次读取一行,请使用PHP_NORMAL_READ。否则,请使用PHP_BINARY_READ(默认值)。