这是我的代码:
//main.php
$host = '127.0.0.1';
$port = 21626;
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($socket, $host, $port);
socket_getsockname($socket, $host, $port);
socket_listen($socket, 5);
$clients = [$socket];
while(true)
{
$read = $clients;
$write = [];
$except = [];
if (socket_select($read, $write, $except, 0.5) < 1){
continue;
}
if (in_array($socket, $read)) {
handle_request($socket);
}
}
function handle_request($socket)
{
$client = socket_accept($socket);
$data = socket_read($client, 1024, PHP_NORMAL_READ);
socket_write($client, $data . "\n");
}
它创建在端口21626上运行的TCP服务器。要实际运行它,请执行以下操作:
$ php main.php
要提出请求,您可能需要像这样使用telnet:
$ telnet 127.0.0.1 21626
我面临的问题是每次发出请求时,服务器都会处理此请求,客户端套接字会立即关闭。它看起来像这样:
如您所见,我键入“Hello”,服务器响应echo并关闭连接。但我希望保持这种联系。
所以,我的问题是,为什么客户端套接字被关闭,即使我没有明确地这样做?