• Qt 多软件同时运行 IP绑定问题


    最近一直使用Qt开发一些配合设备调试用的软件,从中遇到一些问题,简单记录一下。

    背景:在同一台笔记本上,同时运行3个基于Qt开发的软件,这三个软件之间通过UDP组播或单播进行通信

    场景一:将3个软件(A、B、C)需要绑定的IP设置在同一个网卡上,绑定同一个端口号

    由于存在A软件发送组播,B软件需要接收的相关组播里的报文情况,故需要网卡可以自发自收,即

    recvSocket->bind(QHostAddress("192.1.104.1"),0x6666,QAbstractSocket::ShareAddress);//绑定IP和端口号
    recvSocket->setSocketOption(QAbstractSocket::MulticastLoopbackOption,1);//设置回环,可自发自收

    注:由于在windows系统上运行,故在网络的接收端套接字设置即可

    场景二:将3个软件(A、B、C)需要绑定的IP设置在不同的网卡上,绑定同一个端口号,即该笔记本为多网卡环境

    多网卡同时运行,即使设置了多播回环,软件之间也无法通过UDP组播进行通信,故需要在加入组播时,绑定对应网卡

    //可以查看网卡信息
    QList<QNetworkInterface>ifaceList = QNetworkInterface::allInterfaces();
    for(int i =0;i<ifaceList.count();i++)
    {
        qDebug()<<ifaceList.at(i).humanReadableName()<<endl;
    }
    //接收网络套接字 设定网卡
    recvSocket->setMulticastInterface(ifaceList[0]);
    //加入组播,添加对应网卡
    recvSocket->joinMulticastGroup(QHostAddress("224.100.200.113"),ifaceList[0]);

    问题:多个软件同时运行,且对应绑定的IP均部署在同一个网卡上,使用同一个端口,可以进行软件与软件之间的单播通信吗?  

    回答:可以

  • 相关阅读:
    LOTUS还能活多久
    关于Domino的DIIOP服务 (转)
    Domino Servlet示例
    Limits on numeric data representation in LotusScript
    用webdav实现从DominoOA到Exchange的日程同步.
    Limits on array variables in LotusScript
    Table of Notes and Domino known limits
    IBM / Lotus Domino 与 WebSphere Portal: 单点登录(转)
    某个domino的word公文本地编辑实现方案
    Domino中部署Servlet
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/15989141.html
Copyright © 2020-2023  润新知