gpt4 book ai didi

UDP `join_multicast` 导致 OtherIOError

转载 作者:行者123 更新时间:2023-11-29 08:30:24 25 4
gpt4 key购买 nike

我正在尝试加入 KNX 多播组(ip:224.0.23.12;端口:3671)但收到 OtherIoError

套接字连接似乎正常,因为我可以发送到多播组(由 Wireshark 检查)。可以肯定的是,我在只激活一个网络接口(interface)的情况下进行了测试,并尝试将 local_addr 替换为 127.0.0.1 以及本地 IP 地址。我的 Rust 版本是 0.13.0-nightly (5ba610265 2014-12-25 18:01:36 +0000) 在 Windows 7(64 位)上运行。

类似的代码在 Go 中也适用于加入该多播组的其他软件。

use std::io::net::udp::UdpSocket;
use std::io::net::ip::{Ipv4Addr, SocketAddr};

fn main() {
let local_addr = SocketAddr { ip: Ipv4Addr(0, 0, 0, 0), port: 3671 };
let mut socket = match UdpSocket::bind(local_addr) {
Ok(s) => s,
Err(e) => panic!("couldn't bind socket: {}", e),
};
match socket.join_multicast(Ipv4Addr(224, 0, 23, 12)) {
Err(why) => println!("! {}", why.kind),
Ok(_) => {},
};
drop(socket)
}

最佳答案

好吧,我认为这是 Rust 中的一个错误。

Microsoft KB说:

Note that this includes Winsock.h. If the project is linked with Ws2_32.lib, setsockopt will fail with runtime error 10042 (WSAENOPROTOOPT). This is because in Winsock.h, IP_ADD_MEMBERSHIP is defined as "5". The corresponding Winsock runtime can not resolve option 5 at the IPPROTO_IP level, so the failure occurs with error code 10042.

Rust 常量 are defined作为 5 和 6,所以也许有人从某处抓取了错误的常量?我可能会为此提交官方 Rust 错误。

关于UDP `join_multicast` 导致 OtherIOError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com