首页 > 解决方案 > LibUV 从现有套接字创建 UDP 流

问题描述

我对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);

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

标签: c++socketslibuv

解决方案


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

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

你可以在这里找到 LibUV 的 pipe API 的文档。


推荐阅读