發現不少同學在用.NET做通訊的時候都關心一個問題,.NET能支持多少個在線連接。其實.net的通訊由winsocket所支持,既然由低層的winsocket所支持那.NET其端的接入連接數的受限完全取於winsocket當前操作系統的限制。
65535的限制?
有很多同學認為由於端口有限,所以接入的連接會受端口資源限制。其實對於服務端的連接接入是不會產生端口資源的分配,它只分配相應的操作系統句柄。所以可接入的連接不會不會受端口數的限制。其實WIN預留可接入的連接數上限值還是非常大的,通過以下注冊表值可以了解到
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)
從值來看是1000多萬個接入限制,當然這緊緊是一個值實上當前操作系統和內存資源是否支持這麼多句柄實例也很難說……由於連接的接入緊緊是創建和分配相應的句柄資源。如果內存夠大的情況的確可以支持很多的連接數接入,當然還需要操作系統支持管理這麼多句柄實例。
針對一些同學說6W個連接的做一下簡單的測試
本欄目