我們正在努力在Filezilla Client和Filezilla Server之間進行通信,在它們之間有兩個代理。在兩個代理之間,我們有2個tcp連接。如何讓插座保持活動狀態
filezilla客戶端 - > P1 - 2 ----- P2 - > filezilla服務器。
我們正在得到的問題是上傳filezilla客戶端將發送整個數據到P1和P1發送數據到P2。但是P2 recv。速度不如P1發送速度快。 P1將在一段時間後關閉連接,但由於P2仍在嘗試從P1接收數據,因此無法接收,並且會失敗。
有沒有什麼辦法讓soket活着直到另一端完全收回數據?
我已經嘗試使用不同超時選項的靈兒。但它沒有處理所有情況。
我已經嘗試設置套接字選項keepalive,但仍然存在相同的問題。
任何人都可以請幫助或建議我一些東西嗎?
這是不應該的。 FTP基於一對TCP連接。 TCP內置了流量控制機制 - 端點將調整其窗口大小以防止鏈路的任何部分過載。只要代理正在交換一些數據,套接字就不應該被丟棄。爲什麼P1的客戶端子系統關閉套接字?它產生了什麼錯誤/狀態消息/日誌? –
P1有兩個套接字,例如上傳一個帶有filezilla客戶端(sock1)的套接字和一個套接字以將數據發送到P2(套接字2)。一旦它完成發送數據到P2比關閉sock1和sock2這兩個套接字,結果P1和P2之間的通信信道中斷導致文件傳輸失敗。 – Nidhi