【问题标题】:Qt - QUdpSocket bind failed constantlyQt - QUdpSocket 绑定不断失败
【发布时间】:2018-05-02 20:33:21
【问题描述】:

我有这两行代码。 我需要一个只接收数据的套接字

第一种方法有效,我收到日期(来自第二种方法中的 ip/port)

第二种方法总是返回 false。

我不明白其中的区别,也找不到问题所在。

任何人都知道如何解决这个问题或我做错了什么?

 udpSocket = new QUdpSocket(); 
bool result = udpSocket->bind(QHostAddress::Any, 7755);


QHostAddress address("the ip") 
udpSocket = new QUdpSocket(); 
bool result = udpSocket->bind(address , 7755);

【问题讨论】:

    标签: c++ qt udp qudpsocket qhostaddress


    【解决方案1】:

    在第一种方法中,当您绑定套接字bind(QHostAddress::Any, 7755) 时,它将侦听系统上的所有接口;因此它会在知道至少有一个接口已启动的情况下成功绑定。

    在第二种方法中,当您使用QHostAddress address("the ip") 设置 IP 地址时,您需要确保在您的系统上使用该 IP 地址的接口已启动(在 Win 上使用 ipconfig / 在 Linux 上使用 ifconfig)。 现在,构造函数将自动从传递的字符串(“ip 地址”)中检测它是 IPv4 还是 IPv6。 如果您没有指定类型,那么您可以将地址构造为 Any 并将您的套接字绑定到它:

    QString string("192.168.1.1");
    QHostAddress address(QHostAddress::Any);
    address.setAddress(string);
    udpSocket = new QUdpSocket();
    bool result = udpSocket->bind(address , 7755);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多