Windows 10/Server 2012/2019 の TCP接続の上限 その2
Windows 10/Server 2012/2019 の TCP接続の上限 その1
ASP.NET アプリで試したら、制約がなかったので実装方法を変えてみることにした
TS=new TTcpServer(this); TS->LocalPort = StrToInt(PORT->Text); TS->Tag = i; TS->OnAccept=TcpServer1Accept; TS->OnListening=TcpServer1Listening; |
TcpServerコンポーネントによる実装
TS=new TServerSocket(this); TS->Port = StrToInt(PORT->Text); TS->Tag = i; TS->OnAccept=ServerSocket1Accept; TS->OnListen=ServerSocket1Listen; TS->OnClientRead=ServerSocket1ClientRead; TS->OnClientDisconnect=ServerSocket1ClientDisconnect; |
ServerSocketによる実装
タスクマネージャー見てて気づいたのだが
TcpServer で実装すると、1コンポーネントが 1スレッド
TServerSocket で実装すると いくつコンポーネントを実装しても1スレッドになるらしい
で、接続してみた結果 16339 ( 0x4000 - 45) 接続以降はエラーとなった
WSAENOBUFS 10055 エラーが出て、以後、既存の接続を切断しても接続を繰り返してどうしよもなくなってしまった・ω・
ちなみに、Windows 2000は 3942 (0x1000 - 154) で WSAENOBUFS 10055 となった
ちなみに、TcpServer コンポーネントの時は
Connection refused 10061 エラー
結論としては、OSの TCP接続の上限ではないという事らしい ・ω・
でも、Windows 2000でも3942接続できたってことは先の 10接続制限ってのもなんかありそうですね (・ω・)
続くかも
単に動的ポート数の違いでWSAENOBUFSかな?