PHP从Socket获取可用字节数

3
我正在编写一个工具,使用的是这些套接字(而不是这些),我认为它们与第二个严格基于流式套接字的区别在于。问题是,你不能在我使用的套接字上使用socket_get_status

是否有其他方法可以获取可用字节数,而不是socket_get_status

1个回答

1

fsockopen()返回的流是常规套接字的托管包装器;未读取的字节(这可能是您想要的)是包装器本身执行的套接字上的read()和脚本执行的包装器上的fread()之间的差异。

包装器以8192字节的块读取,但fread()fgets()可能不会一次读取所有数据,因此有一个unread元数据字段可供查询;是否有用是另一回事;-)

使用常规套接字时,您可以:

  • 使用socket_select()等待数据变为可用,然后使用适当大的socket_read()
  • 使用socket_set_nonblock()使套接字处于非阻塞状态,并尝试从中读取

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接