There are several nice C# async socket samples on codeproject.com. dg
-----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Mike Woodring Sent: Thursday, May 17, 2007 1:57 PM To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM Subject: Re: [ADVANCED-DOTNET] follow-up: Host response > It's the way the host was programmed. What he said ^ The only thing I'd add is that most tcp socket implementations have the notion of a 'backlog' parameter of some sort that the host/listening app sets when the first setup the socket that they'll accept incoming connections on. A pretty common default for that backlog # is 5. It's been awhile, but in C++, this was a parameter to one-of(bind, listen, accept). The backlog is the # of new/pending connection requests that the underlying socket layer will allow in while it's waiting for the host to get around to calling accept again. So N clients will sort of 'stall' in their call to connect while the host is off handling something (assuming here it's not doing any async processing like dg mentioned). But client N+1 that attempts to connect will get an immediate failure from their call to connect. For example, if backlog=5, then the host could accept 1 connection and proceed to deal with it. Between then and when the host gets back to calling accept the subsequent time, up to 5 more clients could connect (although their call to connect will block). The 6th client who attempts to connect will fail their call to connect right away. So the backlog effectively tells the sockets layer the point at which you figure if you haven't gotten around to dealing with those clients yet, you're not likely to anytime soon. But like David said, most socket-based apps use async i/o facilities (if they exist on their platform) of one sort or another. I know your host is written in C++ right now, but fwiw, if you want some C# samples, you can take a look at this sample: http://www.bearcanyon.com/dotnet/#ConnectionLimit It's just simple winforms app in C# that does nothing but allow an arbitrary # of connections. But it only uses one thread, so uses async i/o to achieve the simultaneous connections. -Mike Bear Canyon Consulting LLC http://www.bearcanyon.com http://www.pluralsight.com/mike =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com