2010-04-05 87 views
0

什麼更有意義?使用一個Socket來發送和接收數據

  • 使用一個插座以從嵌入式硬件設備
  • 使用發送和接收數據至/一個插座發送數據和獨立的套接字讀數據

通信不是很密集的,但重要的要點是儘可能快地接收數據。應用程序在Windows XP及更高版本下運行。

+0

誰在進行初始連接,您還是嵌入式設備? – ParmesanCodice 2010-04-05 18:11:23

+0

應用程序正在啓動連接,設備被配置爲僅響應模式 – volody 2010-04-06 13:48:50

回答

2

插槽被設計爲雙向通信,因此最有可能的嵌入式設備的開發人員沒有設計他們的系統來處理兩個插座。

我有一些經驗與嵌入式硬件工作,我已經看到了他們的工作不同的方式:

設備連接到您的應用程序,並通過UDP
開始流數據在這種情況下我見過最多玩三個插座。一個TCP偵聽套接字,接受來自嵌入式設備的連接。嵌入式設備然後通過一些連接參數發送數據,比如它將向您發送數據的速度。嵌入式設備然後通過upd開始流式傳輸數據。一旦收到數據,你會在第二個upd套接字中發送一條消息,說「我得到了那個」。然後設備開始流式傳輸下一個數據位(再次通過upd)。然後這繼續無限。我見過跳過初始TCP連接並且設備只是不斷流數據的變體。

請求/響應
你有多少套接字在這裏需要取決於誰在做初始連接,作爲將決定誰需要監聽套接字。由於您正在進行初始連接,因此我會使用它。這是更多面向連接的場景。在這裏,您連接到設備並請求一些數據,然後設備會向您發送對該數據的響應。 在這種情況下,您只能使用一個套接字。由於設備將響應每個收到的套接字請求。

所以要回答你的問題「什麼更有意義?」,它完全取決於你的嵌入式設備的設計。如果它在你請求的同一個套接字上響應,答案很簡單,因爲只有一個套接字是可能的。流媒體設備通過upd應該提供更好的性能與兩個套接字,但同樣只有當您的設備支持它。

至於你的問題的第二部分,「要儘可能快地接收數據」,這很容易出現異步。以下是異步Socket編程一些優秀的博客:

如果您正在使用自定義/第三方協議與你不能出差錯具有設備進行通信一個通過這些無論是讀:

1

我沒有專家,但是使用一個套接字有什麼缺點嗎?

它已經可以發送和接收,我的猜測是,你最終得到更多的開銷,如果你有閱讀一個插座和一個用於發送...