#include <QtCore/QCoreApplication> #include <QtCore/QSignalMapper> #include <QtCore/QStringList> #include <QtNetwork/QNetworkInterface> #include <QtNetwork/QHostAddress> #include <QtNetwork/QTcpServer> #include <iostream> #include "greeter.h" int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); int port = app.arguments().at(1).toInt(); Greeter* greeter = new Greeter(&app); QSignalMapper* sigMap; sigMap = new QSignalMapper(&app); greeter->connect(sigMap, SIGNAL(mapped(QObject *)), SLOT(newConnection(QObject *))); QList<QTcpServer> servers; QList<QNetworkInterface> ifs; ifs = QNetworkInterface::allInterfaces(); foreach(const QNetworkInterface& i, ifs) { QList<QNetworkAddressEntry> entries; entries = i.addressEntries(); foreach(const QNetworkAddressEntry& entry, entries) { QHostAddress address = entry.ip(); // fix scope of link-local addresses Q_IPV6ADDR addr6;// = address.toIPv6Address(); addr6 = address.toIPv6Address(); if (addr6[0] == 0xfe && addr6[1] == 0x80) { QString name=i.humanReadableName(); address.setScopeId(name); } QTcpServer* server; server = new QTcpServer(&app); sigMap->setMapping(server, server); sigMap->connect(server, SIGNAL(newConnection()), SLOT(map())); server->listen(address, port); if (!server->isListening()) { std::cout << "Cannot listen on " << address.toString().toAscii().constData() << std::endl; } } } return app.exec(); }