【问题标题】:UDP Cannot Assign Requested AddressUDP 无法分配请求的地址
【发布时间】:2013-08-08 19:19:20
【问题描述】:

我想打开一个 Datagramsocket 并向我的网络设备发送一些数据包。 但是,当我使用以下 cood 时,会抛出异常: Cannot Assign Requested Address: 192.168.1.114:1900

Poco::Net::SocketAddress sa("192.168.1.114",1900);
Poco::Net::DatagramSocket dgs(sa);
std::string text = "hello";
dgs.sendBytes(text.data(),text.size());

这里有什么问题。我还使用 udp 测试软件来测试接收端是否能够在此端口上接收 udp 数据包并且它可以工作,但是使用上面的 poco 代码它不起作用。

亲切的问候

【问题讨论】:

    标签: c++ sockets udp datagram poco-libraries


    【解决方案1】:

    查看文档。可能sa 应该是本地地址,而远程地址将在其他地方指定。

    UDP 没有连接的概念,因此没有理由将套接字绑定到单个远程地址。 UDP 套接字可以向任何远程套接字发送和接收。

    【讨论】:

    • 我明白了,那我该如何指定目标设备的 IP:port 呢?
    • 我不熟悉 Poco 库。检查文档/示例。
    【解决方案2】:

    我不知道Poco,但您必须将bind 发送到本地 地址和端口,然后您的sendto 将发送您的数据包来自该本地address:port 到远程地址和端口。

    【讨论】:

    • 这个答案是正确的。您可以绑定到本地 IP 地址,尽管这不是必需的,如果您想要 UDP“连接”语义,您必须 connect() 到远程 IP 地址。
    猜你喜欢
    • 2015-01-14
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多