2013-06-05 81 views
0

我是linux領域的新手程序員。我基本上是熟悉C的MicroController程序員。現在我進入了很少的PC編程並需要一些輸入。需要傳遞給另一個線程的信息

我打開一個套接字併發送一個廣播,在網絡上尋找我的嵌入式設備。首先,我正在探測機器上的接口,並將在每個子網中進行廣播,並通過簽名撥打我的設備。該設備正在偵聽該特定端口,並以其簽名作出響應。該程序然後獲取我的設備的IP和其他細節,並將開始進行通信。 我在每個接口的一個函數中發送一個調用,並且爲了避免阻塞我正在創建另一個監聽線程來獲得可能需要一些時間才能到達的響應。在收到迴應時,我需要通知其他線程關於這個和給他們的數據。 在這種情況下,哪種方法最好?信號,信息或國旗或其他? 因爲我需要在windows中實現這個代碼,所以如果可以在兩個平臺中使用一個可能的機制,那將是一件好事。 請建議 Roy Thomas

+3

我建議羅伊托馬斯 –

+0

@基倫約翰斯通:...(它讓我微笑,但...) –

回答

0

這是一個經典的網絡編程問題。就我個人而言,當我在C++的這個級別進行網絡編程時,我使用C++ POCO庫(參見this)。

您不指定使用UDP還是TCP。如果您使用TCP,則該庫提供了一種稱爲TCPServer框架,它處理這些問題,即管理處理連接的工作線程池。

These slides,從幻燈片「The TCPServer Framework」開始,解釋原理。

然後,您可以使用FIFO在您的線程或POCO庫通知之間進行通信。

0

看看Qt Creator它是一個跨平臺的C++ IDE,它對信號和插槽有很好的實現。

它有自己的擴展STL函數庫和一些非常好的線程函數,你應該看看。

我知道這可能不是你正在尋找的答案,但我每天都在使用Qt,它的優點是!所以隨時提出任何問題...

+0

http://qt-project.org/doc/qt -5.0/qtconcurrent/qtconcurrentrun.html – AngryDuck