2012-09-19 16 views
5
if(socket_recv ($sock , $buf , 2045, MSG_WAITALL) === FALSE) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode);   
    die("Could not receive data: [$errorcode] $errormsg <br>"); 
} 
echo $buf; 

de la función anterior no muestra mensaje completo, por lo que trataron de obtener la longitud máxima de la variable $ buf como estocómo llegar longitud máxima de esta función socket_recv() en PHP

socket_recv ($ sock, $ buf, strlen ($ buf), MSG_WAITALL)

pero no funciona. por favor amablemente me ayude

THX y saludos,

+0

¿Cual es el tamaño en bytes de los datos que está esperando recibir? El primer paso aquí es mirar en la especificación del protocolo para saber eso. –

+0

'strlen()' no obtiene el tamaño máximo de '$ buf', obtiene el tamaño de los datos que están actualmente en' $ buf'. ¿Qué tipo de socket es este, stream o datagrama? – Barmar

+0

@Barmar stream $ sock = socket_create (AF_INET, SOCK_STREAM, 0) – NoNo

Respuesta

4

que deben recibir la respuesta con un bucle

$received; 
while(socket_recv($sock, $buf, 1024, 0) >= 1) 
{ 
    $received .= $buf; 
}