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)
但不幸的是,这并没有改变任何事情.
您用来绑定UdpSocket到的地址是多播地址.
该参数UdpSocket::bind应该是你送的本地地址的.
文档使用127.0.0.1:34254.如果当前没有使用它,这应该适合您.此外,您可以为其提供一系列潜在的地址供您使用.
受此答案的启发,我将地址更改为“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)
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |