2014-10-30 24 views
0

我對TCP網絡相當陌生,並且希望使用TCP來實時傳輸數據。基本上,我需要我的PC python發送數據(單個字符)到Android應用程序。要發送的數據會實時更改,並且在更改數據(通常間隔大約0.5 - 1秒)時,它必須將此新數據發送到Android應用程序,並立即顯示在應用程序中。TCP在一段時間內用於實時小型數據包數據

我的問題是 1)如果我使用TCP,是否有可能保持套接字連接打開,即使發送一個數據以預測後續傳輸。或者我需要在每次數據傳輸後關閉連接並設置另一個套接字連接。

2)如果我正在執行類似這樣的事情,TCP的延遲是多少?

任何形式的建議非常感謝!

回答

0

大多數TCP實現延遲發送小緩衝區一段時間(約0.2秒),希望在增加發送TCP段的開銷之前提交更多的數據。您可以使用TCP_NODELAY選項(主要)消除該延遲。還有其他一些因素會影響到這種情況,例如堆棧恰好處於ACK序列的位置,但它是獲得及時交付的合理好方法。

延遲時間取決於很多因素,包括線路上的其他通信量以及給定段是否被丟棄並需要重新傳輸。我不確定一個固定的數字是什麼。

有時候實時數據「比從前更好」,這使得UDP數據報成爲一個不錯的選擇。

更新:直到你關機()將其關閉TCP連接保持開放,客戶端或服務器級別套接字超時命中或底層堆終於厭倦,並將其關閉。所以通常情況下,您只需連續定時連接併發送數據。處理超時套接字的常見方法是在發生發送錯誤時重新連接。