<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 概述 QLocalServer 1. QLocalServer可以接受來自本地socket的連接。 2. server通過調用listen(),監聽特定的連接。 3. newConnection()是在每次server與client連接上時所發出的信號。 4. nextPendingConnection()將等待中的連接當作一個已連接上的**QLocalSocket**。返回值是指向QLocalSocket的指針,這個QLocalSocket可以與client建立通信。 ## 示例 <details> <summary> server.h</summary> ``` #ifndef SERVER_H #define SERVER_H #include <QLocalServer> #include <QLocalSocket> class Server : public QObject { Q_OBJECT public: Server() { m_server = 0; } ~Server() { if (m_server) { delete m_server; } } int init(const QString & servername) { // 如果已經有一個實例在運行了就返回0 if (isServerRun(servername)) { return 0; } m_server = new QLocalServer; // 先移除原來存在的,如果不移除那么如果 // servername已經存在就會listen失敗 QLocalServer::removeServer(servername); // 進行監聽 m_server->listen(servername); connect(m_server, SIGNAL(newConnection()), this, SLOT(newConnection())); return 1; } private slots: // 有新的連接來了 void newConnection() { QLocalSocket *newsocket = m_server->nextPendingConnection(); connect(newsocket, SIGNAL(readyRead()), this, SLOT(readyRead())); } // 可以讀數據了 void readyRead() { // 取得是哪個localsocket可以讀數據了 QLocalSocket *local = static_cast<QLocalSocket *>(sender()); if (!local) return; QTextStream in(local); QString readMsg; // 讀出數據 readMsg = in.readAll(); // 發送收到數據信號 emit newMessage(readMsg); } private: // 判斷是否有一個同名的服務器在運行 int isServerRun(const QString & servername) { // 用一個localsocket去連一下,如果能連上就說明 // 有一個在運行了 QLocalSocket ls; ls.connectToServer(servername); if (ls.waitForConnected(1000)){ // 說明已經在運行了 ls.disconnectFromServer(); ls.close(); return 1; } return 0; } signals: void newMessage(const QString &msg); private: QLocalServer *m_server; }; #endif // SERVER_H ``` </details> <br /> <details> <summary> server_main.cpp</summary> ``` #include <QApplication> #include <QLabel> #include <QMessageBox> #include "server.h" int main(int argc, char **argv) { QApplication app(argc, argv); QLabel text("teststts"); Server s; if (!s.init("localserver-test")){ // 初使化失敗, 說明已經有一個在運行了 QMessageBox::information(&text, "info", "There is already exist one!"); return 1; } QObject::connect(&s, SIGNAL(newMessage(const QString &)),&text, SLOT(setText(const QString &))); text.show(); return app.exec(); } ``` </details> <br /> <details> <summary> client.cpp</summary> ``` #include <QLocalSocket> #include <stdlib.h> #include <unistd.h> int main(int argc, char **argv) { QLocalSocket ls; ls.connectToServer("localserver-test"); srandom(1000); if (ls.waitForConnected()){ while (1){ QTextStream ts(&ls); ts << QString::number(random()) + "\nTTTTTTTTTT" + "\nXXXXXXXX"; ts.flush(); ls.waitForBytesWritten(); sleep(1); } } return 0; } ``` </details> <br />
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看