我正在編寫一個服務器端客戶端編程在C中使用套接字API,我試圖發送控制信息到客戶端使用不同的TCP連接。 每當服務器創建新的套接字(TCP)時,我都希望它通知客戶端使用新的套接字進行進一步的通信。目前我曾想過發送UDP數據包給客戶端以通知。一旦客戶端收到數據包,就會將ACK發送回服務器,同時切換到另一個TCP連接。 我想知道,除了使用UDP之外,還有更好的方式來通過網絡傳輸控制數據,因爲它是不可靠的.Thnx傳遞在客戶端服務器之間的套接字編程客戶端服務器C
我想闡述一下我試圖實現的目標。我將測量帶寬,延遲,接收窗口等參數作爲Ipv4和IPv6 TCP連接的度量標準。基於觀察到的性能,我將在提供更好性能的兩個協議之間切換。一旦決定切換,我必須通知合作伙伴(可能是基於我正在測量的上傳,下載的帶寬類型的客戶端或服務器) 。我從IPv4連接開始,同時打開另一個連接 - 測量帶寬和延遲的IPv6。
如果IPv6連接提供更好的性能,我需要告訴客戶端切換到IPv6。在這種情況下,兩個連接都打開以便週期性地監視帶寬以決定切換。所以我在這方面有兩個疑問。 1.一次保持兩個連接是一個好主意。只有當我需要測量度量時,我才能創建另一個連接,因爲兩臺機器之間的路徑幾乎不會改變。如果是,我可以使用控制信息另一個TCP連接告訴客戶端進行切換。這樣我也可以測量帶寬並通知客戶端
兩個有兩個TCP連接是不是一個好主意,我可以用UDP發送控制信息。我正在避免發送用於傳輸實際數據的conn的控制信息,因爲這將是一個開銷。我的代碼將像中間件一樣傳輸數據,其中應用程序將調用我的函數/宏來傳輸數據,而內部代碼將負責測量帶寬和切換的決定。我希望我明白我的要實現。提前感謝您的反饋
服務器在切換之前如何與客戶端進行通信?他們是否已經有一個現有的TCP連接?也許你應該更多地解釋架構 - 這個問題留下了很多想象。 如果你已經有了一個開放的TCP連接,你可以使用它進行通信。如果你正在和一個你以前沒有見過的新客戶交談過,UDP可能會工作,但是爲了應對不可靠性,考慮等待ACK,如果沒有在幾秒鐘內收到,重新發送它。 – mgiuca 2010-12-06 03:16:18
聽起來像重新實現FTP協議? – 2010-12-06 03:45:58