Re: Socket Type Selection
Threads are "hanging" because each one is handling 15 sockets, and your sockets are blocking. Thus, one socket will block all 14 of the other sockets being handled by that thread.
In blocking architectures, it's typical that there is exactly one socket per thread. 15 blocking sockets per thread probably can't work.
If you truly expect to be able to handle 100 x 15 = 1500 simultaneous connections, then you should abandon message-based sockets like CAsyncSocket. At a minumum, you should be using event-based sockets, for which I am not aware of a library (MFC does not provide one). Better still, you should be looking at overlapped operations with IO completion ports.
See this thread, and the table reproduced inside of it, for a discussion of the number of connections that each different architecture might be able to support: http://www.codeguru.com/forum/showth...05#post1182005 . It includes a quote from the book "Network Programming For Microsoft Windows, second edition" by Anthony Jones and Jim Ohlund.
None of this is easy, and "short of time" will not help. If you are interested in IOCP-based models, then be aware that the minimum platform is Win 2000 (i.e., IOCP will not work on Win 98).
An approachable introduction to completion ports can be found at "A simple IOCP Server/Client Class" at http://www.codeproject.com/internet/...ver_client.asp . Another good article is found in the October 2000 issue of MSDN magazine: "Windows Sockets 2.0: Write Scalable Winsock Apps Using Completion Ports" by Anthony Jones (well-known winsock expert at Microsoft) at http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/
Mike