我一直在圍繞UDP進行定製以使其可靠。我有這個設計問題,我只有在我的整個程序準備就緒後纔開始實現,並開始將數據包從源發送到接收器。可靠的UDP實現設計問題
場景: 我創建了一個接收數據包的單線程。父節點執行數據包發送作業。由於這只是一個POC,所以我將緩衝區和公共數據結構保存爲全局指針,爲其分配內存。我正在使用互斥關注關鍵內存部分。
作爲可靠性的一部分,我發送一些控制數據包與數據包分開。在任何時候,客戶端都會發送數據包並從服務器接收控制包,而服務器將接收數據包併發送控制包。我已經使用單個套接字,因爲我的理解是發送& recv同時處理單個套接字和默認阻塞。
問題: 爲了測試目的,我發送了100個數據包,從源到數據包。不幸的是,服務器端的線程忙不停地接收數據包並將其存儲在緩衝區中。在父線程獲取上下文切換之前,服務器代碼不會將數據包傳遞給應用程序。這增加了整體通信中不可接受的延遲。
請幫我理解,這是什麼問題;可以改變什麼來改善性能?
由於提前,基達
TCP可能比UDP更可靠。爲什麼你不能使用TCP/IP套接字? –
要求適用於流式傳輸應用程序。 tcp將不太適合。 – KedarX