0

我试图使用QTcpServer的同步连接机制来实现一个服务器。我的代码非常简单。PFB。

//////

MainScreen::MainScreen(QWidget *parent) :
QMainWindow(parent),
    ui(new Ui::MainScreen)
{
    ui->setupUi(this);
    server = new QTcpServer();

}


int MainScreen::waitForConnection()
{
    bool timeOut = 0;

    if (server->listen(QHostAddress("192.168.70.30"), 10000))
    {

        quint16 port = server->serverPort();
        qDebug() << "Server : "<< (server->serverAddress()).toString() << "Port : "<< port;
        server->waitForNewConnection(-1, &timeOut);
    }

    return 0;
}

//主要的

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainScreen w;

    w.waitForConnection();

    return a.exec();

}

我正在尝试从 Linux 客户端应用程序(C)连接到服务器。不幸的是,我的服务器没有任何连接。我需要做其他事情来处理同步连接吗?提前致谢

netstat 的 PFB 结果

网络统计 -np TCP

活动连接

原始本地地址外国地址状态

TCP 127.0.0.1:62908 127.0.0.1:62909 已建立

TCP 127.0.0.1:62909 127.0.0.1:62908 已建立

TCP 192.168.70.89:62817 10.47.1.10:49224 已建立

TCP 192.168.70.89:62924 10.47.1.101:3128 已建立

TCP 192.168.70.89:63209 10.47.1.101:3128 TIME_WAIT

TCP 192.168.70.89:63213 10.47.1.101:3128 TIME_WAIT

TCP 192.168.70.89:63264 10.47.1.101:3128 TIME_WAIT

TCP 192.168.70.89:63265 10.47.1.101:3128 TIME_WAIT

TCP 192.168.70.89:63266 10.47.1.11:8014 CLOSE_WAIT

TCP 192.168.70.89:63267 111.221.112.54:995 TIME_WAIT

TCP 127.0.0.1:62908 127.0.0.1:62909 已建立

4

1 回答 1

1

需要检查的几件事:

  • 在服务器上,它实际上是在监听传入连接吗?在 linux 上运行 netstat -lt 或在 windows 上运行 netstat -ta 并检查端口是否在侦听状态下打开。
  • 使用 QHostAddress::Any 而不是主机上的特定地址,以防该地址有问题。

另外:你必须在windows中使用命令netstat -nap TCP运行netstat,这样它就会显示监听端口。但是由于您可以在本地连接到您的网络服务器,这表明它正在工作。看起来你在windows下运行。如果是这样,您是否尝试禁用窗口的防火墙?如果您正在运行防病毒软件,请尝试禁用它,以防它阻止来自计算机外部的连接。最后,确保机器可以通过 ping 看到彼此。

于 2013-08-12T21:16:00.910 回答