我正在编写一个工具,使用的是这些套接字(而不是这些),我认为它们与第二个严格基于流式套接字的区别在于。问题是,你不能在我使用的套接字上使用socket_get_status。
是否有其他方法可以获取可用字节数,而不是socket_get_status?
是否有其他方法可以获取可用字节数,而不是socket_get_status?
fsockopen()
返回的流是常规套接字的托管包装器;未读取的字节(这可能是您想要的)是包装器本身执行的套接字上的read()
和脚本执行的包装器上的fread()
之间的差异。
包装器以8192字节的块读取,但fread()
或fgets()
可能不会一次读取所有数据,因此有一个unread
元数据字段可供查询;是否有用是另一回事;-)
使用常规套接字时,您可以:
socket_select()
等待数据变为可用,然后使用适当大的socket_read()
socket_set_nonblock()
使套接字处于非阻塞状态,并尝试从中读取