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

Sar*_*ner 5 sockets udp rust

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();
Run Code Online (Sandbox Code Playgroud)

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

Error { repr: Os { code: 49, message: "Can\'t assign requested address" } }
Run Code Online (Sandbox Code Playgroud)

那为什么会这样?

编辑:我尝试了以下建议:

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();
Run Code Online (Sandbox Code Playgroud)

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

Nei*_*kos 6

您用来绑定UdpSocket到的地址是多播地址.

该参数UdpSocket::bind应该是你送的本地地址.

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


Sar*_*ner 0

受此答案的启发,我将地址更改为“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();
Run Code Online (Sandbox Code Playgroud)