What are the major differences between Winsock and *nix BSD socket implementations?
You might want to look here.
To that, I'd drop one more difference, winsocks supports overlapped I/O (with callbacks etc.) through functions like WSARecv (and other similar), which can make porting to bsd-sockets harder.
Also, most functions in winsocks has their Wsa* counterpart, which sometimes offers more options (or at least requires more parameters ;) ), like [recv](http://msdn.microsoft.com/en-us/library/ms740121(VS.85).aspx) and [WSARecv](http://msdn.microsoft.com/en-us/library/ms741688(VS.85).aspx).
See this section of the documentation:
Porting Socket Applications to Winsock