【问题标题】:Setting binmode on PHP sockets在 PHP 套接字上设置 binmode
【发布时间】:2011-06-27 16:24:23
【问题描述】:

我正在从 PHP 中的网络套接字读取二进制数据。 With files, you can use the 'b' mode 指定文件是二进制的,应该这样读取,但是如何将网络套接字标记为二进制?

【问题讨论】:

    标签: php sockets binmode


    【解决方案1】:

    网络套接字总是被假定为二进制数据,因此该标志不是必需的。基于文件的操作的标志的“二进制”名称选择得有些糟糕。它应该是“不翻译行尾字符”标志。

    否则,显而易见的读数是,如果您不指定b,则应以模拟模式读取文件。

    【讨论】:

    • 谢谢。原来我的问题是由于套接字上的一些意外缓冲造成的,而不是因为我得到的数据是以一种有趣的方式编码的。
    【解决方案2】:

    使用unpack()是php读取二进制数据的方式。

    //example:
    $un = unpack("V",$some_bin_string);
    

    【讨论】:

    • 这会从套接字读取数据而不进行 EOL 字符转换...如何?
    猜你喜欢
    • 2011-09-03
    • 2014-07-15
    • 2012-12-21
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2016-12-20
    • 2012-01-07
    相关资源
    最近更新 更多