SOCKS5 代理支持

概述

SOCKS 库实现了 SOCKS5 支持,允许 Zephyr 通过网络代理连接到对端设备。

有关 SOCKS5 工作原理的详细介绍,请参见 SOCKS5 维基百科条目。

有关协议本身的更多信息,请参见 RFC 1928。

SOCKS5 API

SOCKS5 支持通过 CONFIG_SOCKS Kconfig 选项启用。希望使用 SOCKS5 的应用必须调用 setsockopt() 设置 SOCKS5 代理主机地址,如下所示:

static int set_proxy(int sock, const struct sockaddr *proxy_addr,
                     socklen_t proxy_addrlen)
{
    int ret;

    ret = setsockopt(sock, SOL_SOCKET, SO_SOCKS5,
                     proxy_addr, proxy_addrlen);
    if (ret < 0) {
            return -errno;
    }

    return 0;
}

在 MQTT 中使用 SOCKS5 代理

对于 MQTT 客户端,可以使用 mqtt_client_set_proxy() API 来设置 SOCKS5 代理。用法示例请参见 MQTT publisher 示例应用。