首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP `join_multicast`导致OtherIOError

UDP `join_multicast`导致OtherIOError
EN

Stack Overflow用户
提问于 2014-12-31 19:19:58
回答 1查看 1K关注 0票数 0

我试图加入一个KNX多播组(ip: 224.0.23.12;端口:3671),但接收一个OtherIoError

套接字连接显示正常,因为我可以发送到多播组(由Wireshark检查)。当然,我只使用一个激活的网络接口进行测试,并尝试用127.0.0.1和本地IP地址替换local_addr。我的锈蚀版本是运行在Windows 7(64位)上的0.13.0-nightly (5ba610265 2014-12-25 18:01:36 +0000)

类似的代码也适用于加入这个多播组的其他软件。

代码语言:javascript
复制
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)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-31 23:50:38

好吧,我想这是锈病。

这个Microsoft KB说:

请注意,这包括Winsock.h。如果该项目与Ws2_32.lib链接,则setsockopt将在运行时错误10042 (WSAENOPROTOOPT)中失败。这是因为在Winsock.h中,IP_ADD_MEMBERSHIP被定义为"5“。相应的Winsock运行时无法在IPPROTO_IP级别解析选项5,因此错误代码10042会发生故障。

锈蚀常数被定义为5和6,所以也许有人从某个地方抓取了错误的常量?我可能会为此申请一个正式的锈菌虫。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27725466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档