我正在將UDP偵聽器從Java重構爲C.它需要處理每秒1000到10000個UDP消息,平均數據長度大約爲60個字節。沒有必要的答覆。數據不會丟失(不要問爲什麼選擇UDP)。對UDP服務器進行基準測試
我分離了一個處理傳入數據的進程,以便我可以儘快收回 - 而不會填滿我的內核緩衝區。小孩然後處理收到的數據。
總之,我的算法中是:
監聽數據。
收到數據時,檢查錯誤。
把孩子岔開。
如果我是一個孩子,做我的數據並退出。
如果我是父母,收穫任何殭屍的孩子waitpid(-1, NULL, WNOHANG)
。
重複。
首先,有關上述的任何意見?我使用socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
創建套接字,與AF_INET
和INADDR_ANY
和recvfrom
綁定,沒有標記。其次,任何人都可以建議我可以用來測試這個應用程序(或者至少是偵聽器)能夠處理比我所期望的更多的消息嗎?或者,我需要一起破解一些東西來做到這一點。
我猜想後者會更好,這樣我可以比較生成的數據和接收到的數據。但是,意見將不勝感激。