title: variable length packets in php
body: <p>I am receiving packets sent to my server through UDP. I am using socket_read to read the data and it is coming along just fine. I have run into an error however. The length parameter to socket_read in my case is NOT always the same. The length of the data can range anywhere from 50-150 bytes. One thing that remains constant is that the data set is ended with a \x00 byte. How would I get the read function to always read until encountering this byte? I have already tried PHP_NORMAL_READ flag, but the docs say it only ends at \n or \r which really isn't what I want (tried it it doesn't work for my data). At the same time, the php page for socket_read states in the <em>length</em> parameter description that,</p>
  
  <blockquote>
    <p>The maximum number of bytes read is
    specified by the length  parameter.
    Otherwise you can use \r, \n, or \0 to
    end reading (depending on the type 
    parameter, see below).</p>
  </blockquote>
  
  <p>The type says nothing about the /0 byte. Its like a piece of documentation is missing. What I need is a function that will either let me specify a delimiter for my data, will automatically read all the data from the socket that is available. There might be a solution in the socket_recv function but its undocumented and I don't know how it works.</p>
  
  <p>Thanks in advance.</p>