发送到UdpSocket时“无法分配请求的地址”

时间:2018-03-06 07:08:49

标签: sockets rust udp

let addr = "239.255.255.250:1982";
let socket = UdpSocket::bind(addr).unwrap();
let message = "some message".as_bytes();
socket.send_to(message, addr).unwrap();

此代码为最后一行提供以下错误:

Error { repr: Os { code: 49, message: "Can\'t assign requested address" } }

为什么会出现这种情况?

编辑: 我按照建议尝试了以下内容:

let addr = "239.255.255.250:1982";
let socket = UdpSocket::bind("127.0.0.1:34254").unwrap();
let message = "some message".as_bytes();
socket.send_to(message, addr).unwrap();

但不幸的是,这并没有改变任何事情。

2 个答案:

答案 0 :(得分:6)

您用于绑定O(logn)的地址是多播地址。

UdpSocket::bind的参数应该是您从发送的本地地址。

The docs use 127.0.0.1:34254。如果当前没有使用它,这应该适合您。此外,您可以为其提供一系列潜在的地址供您使用。

答案 1 :(得分:0)

this answer的启发,我将地址更改为" 0.0.0.0:34254",并且有效:

let addr = "239.255.255.250:1982";
let socket = UdpSocket::bind("0.0.0.0:34254").unwrap();
let message = "some message".as_bytes();
socket.send_to(message, addr).unwrap();