2012-09-19 29 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; 

từ hàm trên nó không hiển thị thông báo đầy đủ, vì vậy tôi đã cố gắng để có được độ dài tối đa của biến $ buf như thế nàylàm thế nào để có được chiều dài tối đa chức năng socket_recv này() trong PHP

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

nhưng không hoạt động. xin vui lòng giúp tôi

thx và kính chào,

+0

Mà là kích thước tính bằng byte của dữ liệu mà bạn đang mong đợi để nhận được? Bước đầu tiên ở đây là xem xét đặc tả giao thức để biết điều đó. –

+0

'strlen()' không nhận được kích thước tối đa là '$ buf', nó nhận được kích thước của dữ liệu hiện đang ở' $ buf'. Loại socket này là gì, stream hay datagram? – Barmar

+0

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

Trả lời

4

bạn sẽ nhận được phản ứng với một vòng lặp

$received; 
while(socket_recv($sock, $buf, 1024, 0) >= 1) 
{ 
    $received .= $buf; 
} 
Các vấn đề liên quan