【问题标题】:Error received when passing in &mreq argument into setsockopt method将 &mreq 参数传入 setsockopt 方法时收到错误
【发布时间】:2015-11-25 05:15:09
【问题描述】:

我想向从网络主机接收数据的组添加一个套接字。 http://www.tldp.org/HOWTO/Multicast-HOWTO-6.html 页面清楚地解释了如何使用套接字选项 IP_ADD_MEMBERSHIP 和 ip_mreq 数据结构来获取它。所以我创建了我的 ip_mreq 数据结构(我称之为我的实例 mreq)并填写了它的两个属性 imr_multiaddr 和 imr_interface,但是当我将值 &mreq 传递给 optval 参数时,我得到了错误:

错误:“ip_mreq *”类型的参数与“const char *”类型的参数不兼容

但是为什么那个参数需要'const char *',当我遵循的指南指出参数应该是'cont void *'类型时。在这个问题之前,我遇到了未定义 ip_mreq 数据结构的问题,但我通过导入 Ws2ipdef 头库解决了这个问题。我认为问题可能是我导入了错误的库,或者我可能需要导入其他库。

我还在使用视觉基础在 C++ 中编写我的解决方案。

谢谢

【问题讨论】:

    标签: c++ network-programming multicast


    【解决方案1】:

    但是为什么那个参数需要'const char *',当我遵循的指南指出参数应该是'cont void *'类型时

    因为setsockopt() 用于除了 IP_ADD_MEMBERSHIP 之外的几十个套接字选项。

    你必须投射。

    NB 任意 Internet 资源不是规范性参考。

    【讨论】:

    • 啊,我明白了,谢谢。如果我有足够的分数,我会赞成你的回答:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2015-09-28
    • 2012-11-13
    • 2018-07-06
    • 2015-05-07
    • 2021-05-10
    相关资源
    最近更新 更多