繁体   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