【问题标题】:LibUV create UDP stream from existing socketLibUV 从现有套接字创建 UDP 流
【发布时间】:2019-01-30 17:01:36
【问题描述】:

我对unix的工作原理知之甚少,所以请原谅我的无知。

我的 linux 机器上有一个套接字路径,/data/sock/socket

我想用 LibUV 向那个套接字发送数据,但我不确定如何去做。

我目前已将其设置为创建自己的套接字,

uv_udp_t m_socket;
uv_udp_send_t m_send_req;
sockaddr_in m_addr;

uv_udp_init(uv_default_loop(), &m_socket);
uv_ip4_addr("0.0.0.0", 8008, &m_addr);

char buff[6] = "Hello\0";
auto buf = uv_buf_init(buff, 6);
uv_udp_send(&m_send_req, &m_socket, &buf, 1, (const struct sockaddr*)&m_addr, NULL);

如何使用文件系统上的套接字,而不是使用通过代码创建的套接字?

【问题讨论】:

  • 这听起来像一个AF_LOCAL(也称为AF_UNIX)套接字。

标签: c++ sockets libuv


【解决方案1】:

这些套接字称为“本地域”套接字,而不是 UDP 套接字。幸运的是,LibUV 确实支持这些(显然,仅在 UNIX 上;尽管在 Windows 上,相同的 LibUV API 在后台使用“命名管道”。)

无论如何...简而言之,您必须使用 pipe API(即uv_pipe_inituv_pipe_bind()/uv_pipe_connect,)而不是uv_udp_* 函数。

您可以找到 LibUV 的 pipe API here 的文档。

【讨论】:

    猜你喜欢
    • 2014-10-28
    • 2021-12-28
    • 2017-05-07
    • 2016-07-30
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2019-01-17
    相关资源
    最近更新 更多