對於服務器端編程我用聽功能:編程評估SOMAXCONN的值,以設置監聽backlog參數
int listen(int sockfd, int backlog);
據我所知,積壓應小於或等於設定的SOMAXCONN我將運行我的服務器程序的主機系統。 如果我使用SOMAXCONN作爲積壓,這將是等同於硬編碼到通常在tcp.h中定義爲128
然而SOMAXCONN的值,SOMAXCONN是可調諧的sysctl參數,即可以是通過更改/ proc/sys/net/core/somaxconn的值或通過使用sysctl修改net.core.somaxconn進行修改。人們通常會修改somaxconn以獲得更好的系統性能。 我希望我的程序能夠在程序啓動的時候評估系統的somaxconn。
我可以打開/ proc/sys/net/core/somaxconn文件並讀取包含的值,但這似乎是一種很不雅的做事方式,特別是因爲我認爲somaxconn的文件路徑可能會有所不同,具體取決於發行。
是否有API或示例代碼,允許在c/C++中評估somaxconn?
也告訴我,如果我錯過了一些關鍵點,導致思維有缺陷。
我也想將我的應用程序移植到Windows,所以Windows程序員也可能有一些有用的見解分享!
在此先感謝各位黑客。
在windows上,它的記錄在這裏https://msdn.microsoft.com/en-us/library/windows/desktop/ms739168.aspx爲「如果設置爲SOMAXCONN,則負責socket s的基礎服務提供程序將設置積壓至最大合理價值,沒有標準條款來獲得實際積壓值「。所以使用這個特殊的價值,忘掉它。在windows SDK中,winsock2.h將SOMAXCONN定義爲0x7fffffff,這實際上是一個特殊值。不要通過其他任何東西 – 2016-01-09 09:30:25