2017-10-06 60 views
0

服務器我正在開發一個嵌入式設備,我有一個生成的網絡,所以我的設備作爲一個服務器/熱點的WiFi模塊。 我被這個問題困住了,我怎麼知道有多少客戶連接到我的網絡?我怎麼能知道有多少客戶端連接到我使用Qt

+0

您如何將客戶端連接到主機?這個問題有點太模糊,無法給你一個明確的答案。 –

+0

@GuillaumePaniagua:通過WiFi,會假設[但顯然不是]。請記住,WiFi不僅僅是一個無線電頻率,它是一整套協議。在知識產權層面,很多東西是無形的/抽象的,但它仍然存在。 – MSalters

+0

客戶端通過我們用Qt開發的應用程序連接到我,這個應用程序發送命令到我的嵌入式設備作爲服務器。 我的嵌入式設備有一個帶buildroot linux操作系統的imx6 freescale芯片組,在嵌入式主板上運行的應用程序(這個設備是一個烤箱)是使用Qt框架開發的。 應用程序客戶端發送的命令是例如設備溫度的設置。 所以我想知道,讓我打開我的插座 – sebba23

回答

0

聽起來計數connected信號的數量減去disconnected信號的數目一樣簡單。

+0

如果我想知道誰是連接客戶端的IP客戶端的IP? – sebba23

+0

@ sebba23:參見'peerAddress'(和'peerPort'作爲它們的TCP端口)。 – MSalters

0

定義一個變量,並且當添加新的連接+1-1當它們中的一個斷開。

更好的方法是使套接字(客戶端)的QList訪問和輕鬆管理他們。

獲取客戶端的IP是這樣的:

client = nextPendingConnection(); 
qDebug() << client->peerAddress().toString(); 
+0

@ sebba23如果我的回答對您有幫助,請接受答案或加入,謝謝。 – aghilpro

0

你propably真正想知道的是,您的應用程序的許多活躍用戶的連接方式。不計算其他網絡軟件的商業連接或卡住/掛起的應用程序。

我建議如下:

  • 你從客戶端接收的每個命令,添加/更新地圖入口
  • 此映射條目的套接字描述爲鍵和時間戳值。
  • 現在,您可以定期複查地圖和刪除太舊條目。

QMap :: count()給你連接和活動客戶端的數量。

隨着進一步的改進,你還可以將一個信號插座::斷開()信號,並從地圖中刪除該條目立即無需等待超時。

相關問題