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接続制限ってのもなんかありそうですね (・ω・)

続くかも

おすすめ

1件の返信

  1. のん より:

    単に動的ポート数の違いでWSAENOBUFSかな?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です