当前位置: 首页> 函数类别大全> stream_socket_server

stream_socket_server

创建Internet或Unix域服务器套接字
名称:stream_socket_server
分类:Stream
所属语言:php
一句话介绍:创建Internet或Unix域服务器套接字

stream_socket_server 函数

适用 PHP 版本

PHP 4.3.0 及以上版本。

函数说明

stream_socket_server 函数创建一个服务器端的套接字,并为其分配一个监听端口。该函数用于在指定的地址和端口上监听连接请求,常用于实现 TCP 或 UDP 服务器。

函数语法

stream_socket_server(string $address, int &$error_code = null, string &$error_message = null, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, resource $context = null): resource|false

参数

  • $address (string): 要监听的地址和端口。例如,'tcp://127.0.0.1:8080'。
  • &$error_code (int): 在出现错误时,返回的错误代码。可选。
  • &$error_message (string): 在出现错误时,返回的错误消息。可选。
  • $flags (int): 套接字选项,可以是以下常量的组合:
    • STREAM_SERVER_BIND - 绑定套接字到地址。
    • STREAM_SERVER_LISTEN - 开始监听传入的连接。
  • $context (resource): 可选的流上下文,用于设置服务器套接字的配置。默认值为 null。

返回值

如果成功,返回一个资源类型的流(服务器端的套接字)。如果失败,返回 false,并且可以通过$error_code和$error_message获取错误信息。

示例

以下是一个简单的例子,创建一个TCP服务器,并监听客户端连接:

<?php
$address = 'tcp://127.0.0.1:8080';
$server = stream_socket_server($address, $error_code, $error_message);

if ($server === false) {
    echo "错误:$error_message ($error_code)\n";
} else {
    echo "服务器已启动,等待连接...\n";
    
    // 接受客户端连接
    $client = stream_socket_accept($server);

    if ($client) {
        fwrite($client, "欢迎连接到服务器!\n");
        fclose($client);
    }

    fclose($server);
}
?>

示例代码的说明

在该示例中,首先通过调用 stream_socket_server 创建一个 TCP 服务器,并指定监听的地址和端口(127.0.0.1:8080)。如果服务器创建成功,代码会输出“服务器已启动,等待连接...”。然后,服务器通过 stream_socket_accept 等待客户端连接。客户端连接后,向客户端发送一条欢迎信息,并关闭连接。

同类函数