i guess that your best choice is mswinsock ocx.
Why?
'cause you can't create threads in VB the best way (that i know) to do a multi-conn application is to load a new instance of the control each time that ConnectionRequest happens.
In the new instance, set the localport to 0 (zero), and accept the request.
OnClose, unload the instance.
You can handle the winsock control array with its index.
Once that you create a control array, each event has an index (integer type) param.
With element 0 (zero) you can be listen on any port.
when element(0) got a ConnectionRequest you should load a new instance, controling the number of instances with a global variable. On each ConnectionRequest, gVar = gVar + 1
thats the new element to load.