簡體   English   中英

維護TCP連接

[英]Maintaining TCP Connection

我有一個Python程序,該程序從ADC讀取值,然后將它們寫入文件,並在有連接的情況下通過TCP發送它們。 我可以很好地發送數據,但是由於不斷讀取數據,我希望能夠保持連接打開。 如何讓客戶端檢查服務器是否有更多數據要發送,從而保持連接打開?

這種情況似乎與我們的一個應用程序非常相似。 為此,我們使用ZeroMQ。

在PUB / SUB中使用ZeromMQ

PyZMQ上,doc是使用發布/ 訂閱的示例。

數據提供者創建PUB套接字並向其發送消息。

數據使用者設置SUB套接字並從中讀取消息。

通常,PUB套接字是基礎結構的固定部分,因此它綁定到某個端口,然后SUB連接。 但是,如果您願意,可以對其進行切換,並且它也可以工作。

優點是:

  • 提供程序將消息發送到PUB套接字並且不會對其進行阻止
  • 重新連接是自動處理的
  • 如果沒有使用者或連接,則PUB套接字會靜默刪除消息。
  • 實現這個的代碼很短

ZeroMQ的其他消息傳遞模式

PUB / SUB只是一種選擇,還有其他組合,例如PUSH / PULL,REQ / REP等。

我的PUSH / PULL服務已經運行了很多年,並且“保持良好”狀態(通常需要6周的時間才能重新啟動,但這是由於硬件問題而不是ZeroMQ庫引起的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM