相关疑难解决方法(0)

如何在PHP套接字监听器上检测客户端断开连接?

我一直在测试PHP套接字监听,并遇到了上述问题.我的测试监听器工作正常,但如果客户端在没有告诉服务器的情况下断开连接,则脚本会进入无限循环,直到新客户端连接为止.问题似乎在线,$ready = socket_select($read, $write = NULL, $except = NULL, $tv_sec = NULL);因为它应该停止等待连接在这里,而是它跳过等待并直接循环.

任何指针将不胜感激.

码:

#!/usr/bin/php -q
<?php

$debug = true;
function e($str) {
    global $debug;
    if($debug) { echo($str . "\n"); }
}

e("Starting...");
error_reporting(1);
ini_set('display_errors', '1');

e("Creating master socket...");
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$max_clients = 10;

e("Setting socket options...");
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
e("Binding socket...");
socket_bind($socket, "192.168.1.38", 20000);
e("Listening...");
socket_listen($socket, $max_clients);

$clients = array('0' => array('socket' => $socket));

while(TRUE) {
    e("Beginning of WHILE");
    $read[0] = $socket;

    for($i=1; …
Run Code Online (Sandbox Code Playgroud)

php sockets

6
推荐指数
1
解决办法
6605
查看次数

标签 统计

php ×1

sockets ×1