最近實習在做乙個智慧型專案,要求在cotex-a8的linux上用qt實現乙個小型伺服器,該伺服器有以下功能:
1、檢測串列埠傳輸過來的資料,儲存下來,再通過網路傳送到pc機;
2、監測pc機向伺服器傳送的資料,再傳送給串列埠(好吧。。。串列埠再發給zigbee,為什麼節點不直接用wifi啊 我的天!!)
3、使用者手持的觸屏能控制向串列埠或wifi傳送的資料。。。。
目前的思路是建立三個不同的執行緒(顯然這三個執行緒之間通訊密切。。。)來分別監聽串列埠、網路埠和觸屏,分別來相應不同的服務要求。本以為可以直接使用qtcpserver提供的多執行緒機制,直接改寫虛函式incommingconnecte()函式,後來發現,這種方法適用於伺服器監聽的都是socket的場合,而這個專案中只有在乙個埠是檢測的socket,所以qt封裝好的伺服器執行緒機制在這裡使用並不佔優勢,還不如直接在乙個執行緒中監聽指定的那個埠;串列埠的監聽實現起來也不是很麻煩,觸屏的更不用說。現在的問題是,如果伺服器已經接受到了來自串列埠的資料,這個時候要去傳送到網路埠,但客戶機是不知道伺服器已經接收到了串列埠來的資料,不會恰巧在串列埠接收到資料後去連線伺服器然後讓伺服器傳送資料給客戶機。就算這時候客戶機連線了伺服器,但這監聽串列埠端的執行緒不是在同乙個執行緒,這裡面又會引發很多的問題。。。頭大,先把1、2解決了再說吧。。
持續更新。。。。
QT多執行緒伺服器Tcp
最近寫乙個專案用到了伺服器開啟多執行緒,閱部落格無數,奈何沒有理解精髓,致晚上夢見自己寫出來了。次日,奮筆疾書,埋頭苦學,最後終於寫出來了。現在總結一下。伺服器多執行緒需要用到 qtcpserver qtcpsocket qthread qtcpserver 最主要的乙個incomingconnec...
多執行緒伺服器
posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...
QT多執行緒伺服器 客戶端
客戶端效果展示 h ifndef dialog h define dialog h include include include include timeserver.h include class dialog public qdialog endif dialog h cpp include ...