【问题标题】:Connecting to DTLS in PHP在 PHP 中连接到 DTLS
【发布时间】:2023-03-11 09:55:01
【问题描述】:

有没有办法在 PHP 中连接到 DTLS 套接字?可能是一些未记录的功能,或者不是那么受欢迎的扩展?对于我所尝试的,没有可能,但我总是希望我错了。

【问题讨论】:

  • 你有办法在 PHP 中连接到 DTLS 吗?
  • @neoteknic 不幸的是没有。
  • 也许天生不可能,发布一个 php 功能请求?
  • 仍然没有更新?
  • @ArunP 我们正在寻找 PHP 中的 DTLS 支持,而不是 websockets。完全不同的东西。

标签: php sockets datagram


【解决方案1】:

我不相信有一个交钥匙库或扩展来做你所要求的,但这并不意味着它是不可能的。

PHP 通过socket_create + SOCK_DGRAM 支持 UDP 套接字,通过OpenSSL 支持 TLS。从理论上讲,您应该能够使用这两种方法为任何系统提供安全的数据报,但很难确定,因为您的问题非常笼统。请记住,非特权用户无法在大多数 *NIX 系统上打开数据报套接字。此限制也适用于端口

【讨论】:

  • 我认为您的意思是非特权用户无法打开原始套接字,udp 和 tcp 应该具有相同的端口限制。
  • 我知道,但我从来没有成功过,我想要连接到 Phillips Hue Bridge Entrainement API(不同于 REST http api),只需要一个例子。如果它只是 root 没问题。
  • php 包装器仅包含一些功能,与使用 dtls 所需的功能完全不同,例如似乎需要 DTLS_client_method:github.com/nplab/DTLS-Examples/…,但未在 php 文档或源中引用:@987654324 @
【解决方案2】:

它现在可以与 php + swoole 扩展一起使用! 这种代码应该可以工作:

$client = new Swoole\Coroutine\Client(SWOOLE_SOCK_UDP | SWOOLE_SSL);
if (!$client->connect('192.168.0.10', 2100)) {
    exit("connect failed\n");
}
$client->send("ping");

需要对其进行测试并修复以改进我的答案

文档: https://www.swoole.co.uk/docs/modules/swoole-dtls(感谢@mlask)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2018-05-16
相关资源
最近更新 更多