The winsock API on windows is very similar to(basically is a copy of) berkeley sockets from unix.
The best thing to do is to write your own wrapper classes for the socket API. I don't know what .net has to offer (I wont use it), but don't use any of the classes from MFC (CSocket, CAsyncSocket), they are garbage.
www.tangentsoft.net/wskfaq/ is a good place to start
gathering information. The book
Network Programming For Microsoft Windows 2nd edition
by Jones and Ohlund is an excelent resource
By the way. There is no problem connecting Linux machines and windows machines with sockets. The only thing you have to worry about is byte ordering and the winsock API has built in functions to handle this.
You can always pass ansii strings.