Re: WinXP and 2K: Inbound Connections Limited to 10?

From: Robert Bogard (RobertBogard_at_nospam.hotmail.com)
Date: 02/03/05


Date: Thu, 3 Feb 2005 08:36:34 -0800

Thank you all for your replies. These answers (plus some more research on
the Web) have convinced me that my server will work just fine and that WinXP
and Win2k are not somehow "crippled" beyond 10 sockets.

The "10 socket limit" is apparently a legal issue involving the terms of the
EULA, which explains the cryptic sentence in the above links to the effect
that the "TCP connection limit is not enforced, but it may be bound by legal
agreement to not permit more than 10 clients". Since it's a licensing
issue, Microsoft itself naturally enforces a 10-connection limit in its IIS
server (which it provides for-free with non-server editions of XP).
Microsoft might probably take the position that a program (like my server)
that opens more than 10 connections would cause the end-user to break the
terms of his EULA, but the OS itself would not do anything to prevent it.

The "Winsock Programmer's FAQ" includes a brief confirmation that the "10
socket limit" is a licensing issue. At
http://tangentsoft.net/wskfaq/intermediate.html#high-load entitled "What
platform should I deploy my server on?", it mentions the following:
Quote:
"A less important difference from a practical standpoint is that the EULA
for Microsoft's workstation-class operating systems prohibit running a
program that handles more than than 10 connections concurrently. I don't
know of any recent version of Windows that enforces this limit in the
kernel."

As for the practical limit, the same FAQ puts it in the several thousands.
See http://tangentsoft.net/wskfaq/advanced.html#maxsockets entitled "How
many simultaneous sockets can I have open with Winsock?" which concludes:
Quote:
"...I have seen reports of a 64 MB Windows NT 4.0 machine hitting the wall
at 1,500 connections, a 128 MB machine at around 4,000 connections, and a
192 MB machine maxing out at 4,700 connections. ... So, adjusting our
"average" size down to 6 KB per socket, NT 4.0 could handle about 22,000
sockets and Win2K about 44,000 sockets. [I think these numbers refer to
machines with maxed-out memory]. The largest value I've seen reported is
16,000 sockets on Windows NT 4.0. ..."

Since this is a Microsoft-sponsored newsgroup, I'm a little embarassed about
asking how to get around a limit imposed by the EULA. Sorry about that.

I also posted a similar question on the CodeGuru forum, which elicited
similar responses and which you can read here:
http://www.codeguru.com/forum/showthread.php?t=326643

Thanks again for your help,
Robert

"Robert Bogard" <RobertBogard@nospam.hotmail.com> wrote in message
news:ukUVY5kBFHA.4008@tk2msftngp13.phx.gbl...
> Hi all,
>
> I'm trying to write a Windows-based server with a design goal of handling
> around 150 clients simultaneously. Minimum OS would be Win2k or WinXP. The
> server would be written using pure Winsock API calls (i.e., not with MFC's
> CSocket or CAnyncSocket), TCP/IP protocol, and would be accessed over the
> Internet.
>
> I'm trying to understand the significance of this MSDN KB article "Inbound
> connections limit in Windows XP" found at
> http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B314882 .
> According to the article:
>
> Quote:
> For Windows XP Professional, the maximum number of other computers that
are
> permitted to simultaneously connect over the network is ten. This limit
> includes all transports and resource sharing protocols combined. For
Windows
> XP Home Edition, the maximum number of other computers that are permitted
to
> simultaneously connect over the network is five.
>
>
>
> (There is a similar article for Win2k at
> http://support.microsoft.com/kb/128167/EN-US/ )
>
> It was my understanding that this limit of 10 connections was a limit only
> on incoming connections established for the purpose of sharing resources
of
> the workstation (like printers and drives), or incoming connections
> established when running Microsoft's IIS web server. Specifically, I did
not
> think that incoming connections established with my server would count
> toward the limit of 10. For example, the same page cited above also
includes
> this:
>
> Quote:
> Per development: The connection limit refers to the number of
> redirector-based connections and is enforced for any file, print, named
> pipe, or mail slot session. The TCP connection limit is not enforced, but
it
> may be bound by legal agreement to not permit more than 10 clients.
>
> There seems to be a few discussions on the IIS newsgroups that suggest
that
> my server would not be limited. For example, some have said that an
Apache
> web server is not limited to 10 inbound connections, even when running on
> WinXP Home/Pro. This to me suggests that plain-vanilla inbound TCP
> connections are not limited to 10. One example is
>
http://groups-beta.google.com/group/microsoft.public.inetserver.iis/browse_thread/thread/19c42d3e29d1e817/808852bccfd9fbca
>
> So, my question is, would my server be limited by the
10-inbound-connection
> limit?
>
> And if so, short of specifying a minimum OS of Windows Server Edition, is
> there any way to overcome the limit?
>
> Robert
>
> PS: Please note from the headers that I have posted this to two groups
> simultaneously
>
>



Relevant Pages

  • sockets, closing and TIME_WAIT
    ... During heavy load the server can't follow anymore because the sockets ... my server should be able to handle 10 clients connecting ... This gets a free position in the array of connections, ...
    (comp.unix.programmer)
  • Socket communication on multihomed box
    ... I'm building a kind of server which is supposed to handle ... The thing is that connection MUST always stay open. ... as for sockets, I'm using native syscalls, not MFC. ... Another thing is that is should work both under Linux and Windows. ...
    (microsoft.public.win32.programmer.networks)
  • Socket communication on multihomed box
    ... I'm building a kind of server which is supposed to handle ... The thing is that connection MUST always stay open. ... as for sockets, I'm using native syscalls, not MFC. ... Another thing is that is should work both under Linux and Windows. ...
    (comp.programming)
  • Re: network programming: how does s.accept() work?
    ... The program you contact at Google is a server. ... so, the server will usually assign a new port, say 56399, specifically ... connections to a server remain on the same port, ... sockets is what identifies them. ...
    (comp.lang.python)
  • socket_select() hangs sometimes; Bug?
    ... socket_selectfor accepting new connections and dealing with existing ... The select runs on all connected sockets for read and ... the server hangs after some time. ...
    (php.general)