所以我一直在编写这个工具,并且我正在使用这些Sockets(不是这些)以及与它们的区别,我推测第二个使用严格基于流的套接字。问题是您不能在我正在使用的套接字上使用socket_get_status 。
除了socket_get_status之外,还有其他方法可以获取可用字节的数量吗?
所以我一直在编写这个工具,并且我正在使用这些Sockets(不是这些)以及与它们的区别,我推测第二个使用严格基于流的套接字。问题是您不能在我正在使用的套接字上使用socket_get_status 。
除了socket_get_status之外,还有其他方法可以获取可用字节的数量吗?
从返回的流fsockopen()
是围绕常规套接字的托管包装器;未读字节(这可能是您想要的)是read()
套接字上(由包装器本身制作)和fread()
包装器上(由您的脚本制作)之间的差异。
包装器读取 8192 字节的块,但fread()
orfgets()
可能不会一次读取所有数据,这就是unread
您可以查询元数据字段的原因;这是否有用是另一回事;-)
使用常规套接字时,您可以:
socket_select()
等待数据可用,后跟适当大的socket_read()
socket_set_nonblock()
使套接字畅通并尝试从中读取