Scott,
It can be done with Winsock ActiveX or API. The following are VFP code samples that use Winsock API calls (subscription is required):
How to create non-blocking Winsock serverhttp://www.news2news.com/vfp/?example=412A client for testing non-blocking Winsock serverhttp://www.news2news.com/vfp/?example=413A listener ideally must be multi-threaded: after connection established with a client, a thread is created to process client's request; but the listener keeps listening on another thread.
This scenario is not possible in VFP due to its single-thread nature. Unless such listener starts new VFP instance for each request to be processed.
An example, a listener receives SQL SELECT requests and returns results to clients. Some SQL SELECT requests may take quite a time to be processed and sent back to client. During this time VFP listener does not actually listens.