Have you considered Catalyst's SocketWrench Freeware Edition?
CSocket has some just incredible warts. I won't call them bugs because if you hold your mouth right it can be made to work as a private class in a VB program. Wrapping it as an ActiveX DLL resulted in nothing but flaky operation for me though. It holds a listener socket "bound to" a port when it shouldn't just for starters. It attempts some really weird object lifetime management through several private collections as well, resulting in erratic behavior.
What you probably want is some sort of free and unlicensed ActiveX DLL (or control that'll operate as a DLL, without a container) that provides a Winsock interface that looks a lot like the Winsock control. I don't think there is anything like that out there, certainly nothing I can recommend.
A server will be a tough thing to implement single-threaded without async operation. Even if you had such a DLL I'm not sure how you'd write a server that could handle more than one connected client at a time. I doubt VBA allows a With Events array of objects any more than VB6 does. This is why the Winsock control is a control in the 1st place: to permit the use of a control array.
Truthfully, in your situation I'd probably try something else... like writing an HTA. To get the necessary Winsock interface I'd have to break/bend the licensing terms of Microsoft's Winsock control in one of two ways:
[ul][li]Write a VB ActiveX control library that wraps the Winsock control (definately illegal, read the terms).[/li]
[li]Create an IE license package for the Winsock control via LPKTool (might be perfectly legal if you develop using Visual Studio).[/li][/ul]
Both require a Winsock control developer license on a development system, but the end product is portable to other systems.
Since you don't have Visual Studio (or at least VB Pro) licensed for the machine you want to develop on, both of these are illegal for you.
So you might want to look at Catalyst's offering instead.
Problem is, the freeware product is only made available as an OCX. Even if VBA can create a functional instance as a code component (like a DLL) this may not work for you either for the reason already outlined: the With Events array problem.
But I may be all wet, I'm not a heavy VBA guy by any stretch of the imagination.
There is a project out there just waiting for somebody with time on his hands:
Severely rewrite and debug CSocket, it's a good start. Then package it as an ActiveX DLL that exposes two classes. One, a basic single-socket much like the Winsock control. The other, a fancy collection class that's a "server" and contains an embedded listener socket and a collection of service sockets that it hands off connection requests to. Most typical socket events could be bubbled up to the program that instantiates the server class.
Throw it out there as freeware and a lot of scripters and VBA guys might be grateful. Just a thought.