LibUV 从现有套接字创建 UDP 流

LibUV create UDP stream from existing socket

我对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[=10=]";
auto buf = uv_buf_init(buff, 6);
uv_udp_send(&m_send_req, &m_socket, &buf, 1, (const struct sockaddr*)&m_addr, NULL);

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

这些套接字称为 "local domain" 套接字,而不是 UDP 套接字。幸运的是,LibUV 确实支持这些(显然,仅在 UNIX 上;尽管在 Windows 上相同的 LibUV API 在幕后使用 "Named Pipes"。)

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

您可以找到 LibUV 管道的文档 API here