QTcpServer监听地址0.0.0.0

时间:2016-03-25 11:05:56

标签: qt

我有以下代码块用于启动QTcpServer

void UeConnectionServer::ueStartConnectionServer()
{
    QString logText=QString();

    if(!this->isListening())
    {
        if(!this->listen(QHostAddress::Any,
                         1234))
        {
            logText=tr("[ERROR]").append(" ")
                                 .append(QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss:zzz"))
                                 .append(" ")
                                 .append(this->errorString());

            emit this->ueSignalEventInfoAdded(logText);
        }
        else
        {
            logText=tr("[INFO]").append(" ")
                                .append(QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss:zzz"))
                                .append(" ")
                                .append(tr("Server started on address ")
                                .append(this->serverAddress().toString())
                                .append(":")
                                .append(QString::number(this->serverPort())));

            emit this->ueSignalEventInfoAdded(logText);
        }   // if
    }   // if
}   // ueStartConnectionServer

服务器已成功启动,但是,以下日志行显示正在侦听地址0.0.0.0

  

[INFO] 25.03.2016 12:02:36:265服务器地址为0.0.0.0:1234

为什么QTcpServer无法获得工作站的IP,对于我的案例192.168.0.100。我正在使用Linux,此处是ifconfig输出:

eth0      Link encap:Ethernet  HWaddr 1c:6f:65:92:82:02  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:18984 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18984 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3979893 (3.9 MB)  TX bytes:3979893 (3.9 MB)

vmnet1    Link encap:Ethernet  HWaddr 00:50:56:c0:00:01  
          inet addr:172.16.115.1  Bcast:172.16.115.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:327 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vmnet8    Link encap:Ethernet  HWaddr 00:50:56:c0:00:08  
          inet addr:192.168.77.1  Bcast:192.168.77.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:326 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 6c:fd:b9:2d:cc:90  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6efd:b9ff:fe2d:cc90/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1047445 errors:0 dropped:0 overruns:0 frame:0
          TX packets:583455 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1267590187 (1.2 GB)  TX bytes:99542638 (99.5 MB)

QTcpServer尝试从列表中第一个网络接口获取IP address不是活动那个问题可能是问题吗?< / p>

1 个答案:

答案 0 :(得分:2)

因为QT文档说明了这一点:QHostAddress

  

QHostAddress :: Any:IPv4 any-address。相当于   QHostAddress( “0.0.0.0”)。

您不必担心,您的服务器会侦听它拥有的所有IP地址。您有多个网络接口。从所有这些中,您可以访问它们,如果指定192.168.0.100,则将服务器限制为仅1个网络接口。