Backwards Compatibility

I'm writing an application and I would like to be able to support all Windows OS versions from Windows 95 to the present. My code will also need to run on Linux as well, but my concern is more of supporting as many windows versions as possible.

My application will be MFC, unless someone can tell me a compelling reason not to. The Linux version will have a separate client. Can anyone give me any recommendations as to what I should do in the early stages so to make sure that I will be able to support the aforementioned windows versions? Should I only use winsock 1 and not winsock 2? Does anyone know how to implement a TryEnterCriticalSection for older versions of Windows?

There are a lot of issues as I see and I'm relatively new to network programming. Hoping someone with more experience than me could point out some pitfalls.

Thanks a ton in advance,
moleary
[915 byte] By [moleary] at [2007-11-19 17:46:29]
# 1 Re: Backwards Compatibility
The select model is I/O model widely available in Winsock. We call it the select model because it centers on using the select function to manage I/O. The design of this model originated on UNIX-based computers featuring Berkeley socket implementations. The select model was incorporated into Winsock 1.1 to allow applications that want to avoid blocking on socket calls the capability to manage multiple sockets in an organized manner. Because Winsock 1.1 is backward-compatible with Berkeley socket implementations, a Berkeley socket application that uses the select function should technically be able to run without modification.
Does anyone know how to implement a TryEnterCriticalSection for older versions of Windows?The difference is that TryEnterCriticalSection returns immediately, regardless of whether it obtained ownership of the critical section, while EnterCriticalSection blocks until the thread can take ownership of the critical section.
Naumaan at 2007-11-9 13:52:02 >