對于我的 UDP 應用程式,我想將每個會話(4 元組)的處理分散到不同的執行緒。但是看起來如果單播資料包有多個服務器套接字(系結呼叫),內核只會將資料包傳送到其中一個執行緒。
這是始終的行為還是有任何配置旋鈕來啟用傳入資料包到不同套接字的每個會話路由?
指向內核代碼中將傳入資料包傳送到套接字的相關函式的指標也將有所幫助。
謝謝。
uj5u.com熱心網友回復:
但是看起來如果單播資料包有多個服務器套接字(系結呼叫),內核只會將資料包傳送到其中一個執行緒。
這是正確的,資料包只會傳送到一個套接字。
...啟用傳入資料包到不同套接字的每個會話路由?
UDP 中沒有會話,因此沒有每個會話路由。
雖然連接 UDP 套接字是可能的,即同時呼叫 bind 和 connect。在這種情況下,資料包將被傳送到連接的套接字。如果同一個源有多個連接的套接字,它將再次只傳遞給一個。請注意,已連接的套接字將僅接收此連接的資料包,即不會從任意來源(如未連接的套接字)接收資料包。
指向內核代碼中將傳入資料包傳送到套接字的相關函式的指標也將有所幫助。
此行為并非特定于 Linux。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/360433.html
