繁体   English   中英

连接后使PHP Server套接字保持活动状态

[英]Keeping PHP Server socket alive after connection

我有一个服务器套接字页面,该页面基本上接收一个字符串,将其反转并将其发送回客户端,效果很好,套接字在连接后关闭,但尝试修复此问题却无济于事,有人可以告诉我我吗我做错了吗?

    $host = "192.168.8.121";
    $port = 232;

    set_time_limit(0);

    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");

    $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");

    $result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

    $spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

    $input = socket_read($spawn, 1024) or die("Could not read input\n");


    $input = trim($input);
    echo "Client Message : ".$input;

    // reverse client input and send back
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");

    // close sockets
    socket_close($spawn);
    socket_close($socket);

您需要一个套接字读取循环:

function error($socket) {
    return socket_strerror(socket_last_error($socket));
}

$host = "127.0.0.1";
$port = 1024;

set_time_limit(0);

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or
          die(__LINE__ . ' => ' . error($socket));

$result = socket_bind($socket, $host, $port) or
          die(__LINE__ . ' => ' . error($socket));

$result = socket_listen($socket, 3) or
          die(__LINE__ . ' => ' . error($socket));

$spawn = socket_accept($socket) or
         die(__LINE__ . ' => ' . error($socket));

while(true) {

    $input = socket_read($spawn, 1024) or
             die(__LINE__ . ' => ' . error($socket));

    $input = trim($input);

    if ($input == 'exit') {
        echo 'exiting from server socket read loop';
        break;
    }

    echo "Client Message : " . $input . '<br>';

    // reverse client input and send back
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen($output)) or
    die(__LINE__ . ' => ' . error($socket));

}

// close sockets
socket_close($spawn);
socket_close($socket);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM