0

我使用 socket_accept(socket) 创建了一个带有 10 个可能客户端的套接字服务器。现在最多可以连接10次。

在第一个客户端向服务器提交消息后出现问题,该消息被捕获

$data = @socket_read($clients[$i]['socket'], 1024, PHP_NORMAL_READ);

然后脚本尝试通过 socket_accept 和 socket_read 再次侦听客户端和消息,但所有 socket_accept-requests 都失败并出现错误字符串“无效参数”。

var_dump 表示该参数是类型 (Socket) 的资源 (14)。

已经连接的客户端可以继续使用“服务器”脚本,因为没有发生任何事情并保持连接。只有新客户端无法连接并且端口似乎已关闭(无法进行 telnet 和 netcat 请求 - 连接被拒绝)

任何想法都会有所帮助。谢谢!

4

1 回答 1

1

发现我假设在调用套接字处理程序类的析构函数时断开所有套接字 - 一旦子进程关闭,它就会终止所有连接。

从析构函数中删除 socket_shutdown() 和 socket_close() 解决了这个问题。

于 2013-10-08T11:40:00.970 回答