簡體   English   中英

PHP中的異步套接字連接

[英]asynchronous socket connection in php

我正在嘗試在php中編寫異步套接字偵聽器代碼。 但是偵聽器響應僅針對第一個請求而應答,對於其他請求,它只能接收沒有響應的數據包(我正在用嗅探器進行檢查),而且我還在計算有多少時間循環處於活動狀態,而循環僅對於第一個請求處於活動狀態。 ..我將顯示我的代碼:

addr = '192.168.0.117';
$port = 7878;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $addr, $port) or die('Could not bind to address');
socket_listen($sock);

$null = NULL;
$clients = Array();
$cc = 0; // loop counter

while(true){

    echo $cc."<br>";
    $cc = $cc +1;

    $read[0] = $sock;

    $ready = socket_select($read,$null,$null,$null);    
    $client = socket_accept($sock);
    $input = socket_read($client, 312); 


    echo $input;

    if($input == "exit"){
        socket_close($client);
        socket_close($sock);
        return false;
    }

    $output = 0x11;
    socket_write($client,$output);
    $input = "";
}

可能是您在第一個客戶端發送exit命令后立即關閉了監聽套接字。 當客戶端發送exit命令時,您應該僅關閉client套接字。 並且您從while循環return false 顯然,這意味着它將僅處理一個客戶端。

if($input == "exit"){
   socket_close($client);
   socket_close($sock);  // Think about this Line.
   return false; // Think about this Line.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM