3

所以我一直在编写这个工具,并且我正在使用这些Sockets(不是这些)以及与它们的区别,我推测第二个使用严格基于流的套接字。问题是您不能在我正在使用的套接字上使用socket_get_status 。

除了socket_get_status之外,还有其他方法可以获取可用字节的数量吗?

4

1 回答 1

1

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

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

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

  • 用于socket_select()等待数据可用,后跟适当大的socket_read()
  • 用于socket_set_nonblock()使套接字畅通并尝试从中读取
于 2012-06-22T03:36:28.470 回答