簡體   English   中英

在 C++ 中顯示 Qt GUI 時在后台接受套接字連接

[英]Accept socket connection in background while displaying Qt GUI in C++

我的問題

這個 function 應該accept()來自客戶端的連接並返回新的文件描述符newfd 問題是等待連接會凍結 Qt GUI。

int tcp_connect(int sockfd)
{
    struct sockaddr_storage client_addr;
    socklen_t sin_size = sizeof client_addr;
    int newfd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size);

    return newfd;
}

我的嘗試

我嘗試使用std::async異步執行 function ,但用戶界面仍然凍結,直到接受來自客戶端的連接。

std::future<int> future (std::async(tcp_connect, sockfd));
int newfd = future.get();

我也嘗試過使用QTConcurrent::run ,但它產生了相同的結果。

QFuture<int> future = QtConcurrent::run(tcp_connect, sockfd);
int newfd = future.result();

讓我知道是否需要更多信息來回答問題。

Qt 有QTcpSocket和異步信號槽 api,你可以使用它。 或者你可以使用QThread

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM