Yes, you will get very far with a wrapper around Winsock and standard Berkeley sockets. In fact, the differences are so small it's almost possible to do it with #ifdef
directly in the code.
That is, if you're willing to work at the socket level. If you're after something more abstract, then of course wrapping it gives you a good opportunity to also hide the differences.
In particular, Winsock:
- Requires you to "start it up" by calling
WSAStartup()
before any other socket function
- Does not allow you to use plain old close() on a socket; you must use
closesocket()
- Requires that you use
WSAGetLastError()
to get the last error, not plain errno
.
Those are the three major ones off the top of my head, there might be more.