Depending on how much data you need to transfer (and importantly, what data - synchronisation etc.), it can be quite easy.

I don't know what compiler you're using, but lets say you're using Delphi, you can create a class descended from TPersistent. The data you want to transfer can be stored in that class as published properties... then you can make use of the streaming mechanisms in Delphi and say the Indy components and simply stream the class over the socket connection.

I've never written a game that uses this kind of socket connection so I can't comment further, but I have used this technique to squirt 12MB objects over a TCP/IP connection without too many hitches. But, it doesn't have any real error detection etc. So you may be better off defining a communications protocol (I've always used HDLC as a base for such protocols) which can handle failed transmissions and other errors such as corruption etc.