socket_recvfrom返回“超过响应”

I wrote a UDP Server in C++ and I am currently trying to send data from PHP to the server and receive the response. Everything works fine for the first time, but then the php buffer adds some characters to it (e.g. response is just '1', it echos '1to' or '1gg'. I've checked that the server sends a correct response.

Here is the code in PHP:

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($socket, '192.168.178.27', 8000);

socket_send($socket, $data, strLen($data), 0);

$from = "";
$port = 0;

socket_recvfrom($socket, $buf, 2048, 0, $from, $port);
socket_close($socket);

return $buf;

In the file that calls the function:

echo UDP::SendRecv("actor ". $actor->internal_name . " ?");

The number of bytes received is returned by the socket_recvfrom() function itself.

Form the documentation to socket_recvfrom():

Return Values

socket_recvfrom() returns the number of bytes received, or FALSE if there was an error.

So do only use as much bytes from $buf as indictaed by socket_recvfrom() return value, if not FALSE.