English | 简体中文 | 繁體中文
查询

stream_socket_accept()函数—用法及示例

「 接受一个通过stream_socket_server()函数创建的socket连接,并返回一个新的socket连接用于与客户端通信 」


函数名称:stream_socket_accept()

函数适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7

函数描述:stream_socket_accept()函数接受一个通过stream_socket_server()函数创建的socket连接,并返回一个新的socket连接用于与客户端通信。

语法:resource stream_socket_accept ( resource $server_socket [, float $timeout = ini_get("default_socket_timeout") [, string &$peername ]] )

参数:

  • $server_socket:必需。通过stream_socket_server()函数创建的socket资源。
  • $timeout:可选。指定等待客户端连接的超时时间,单位为秒,默认值为ini_get("default_socket_timeout"),即php.ini中默认的超时时间。
  • $peername:可选。用于存储客户端的IP地址和端口号的字符串变量。

返回值:如果成功接受了客户端连接,则返回一个新的socket资源,用于与客户端通信。如果出错,则返回false。

示例: <?php // 创建socket服务器 $server = stream_socket_server('tcp://127.0.0.1:8080', $errno, $errstr);

if (!$server) { echo "无法创建socket服务器:$errstr ($errno)"; } else { echo "等待客户端连接...\n";

// 接受客户端连接
$client = stream_socket_accept($server);

if (!$client) {
    echo "无法接受客户端连接";
} else {
    // 与客户端通信
    $message = "欢迎连接到服务器";
    fwrite($client, $message);
    
    // 读取客户端发送的数据
    $data = fread($client, 1024);
    echo "接收到客户端数据:$data";
    
    // 关闭客户端连接
    fclose($client);
}

// 关闭服务器
fclose($server);

} ?> 以上示例中,首先使用stream_socket_server()函数创建了一个socket服务器,并绑定到本地的8080端口。然后使用stream_socket_accept()函数等待客户端连接,并返回一个新的socket资源用于与客户端通信。在与客户端通信过程中,使用fwrite()函数向客户端发送欢迎消息,并使用fread()函数读取客户端发送的数据。最后,使用fclose()函数关闭客户端连接和服务器连接。

补充纠错
上一个函数: stream_socket_client()函数
下一个函数: stream_set_write_buffer()函数
热门PHP函数
分享链接