It's not possible to know from the information given exactly what your specific problem is, but here's some general advice for debugging network communications that may help.
The most important thing is to be able to see exactly what data is being sent and received, before it is interpreted and converted by the application(s). The best way to do this is with external line monitoring software such as WireShark. If you're going to be doing a lot of this, get familiar with a tool like that.
But for most jobs that's probably overkill. Just log the actual bytes that you're sending and receiving before you convert them, for example:
var count = socket.Receive(buffer);
Console.WriteLine("Received {0} bytes: {1}", count, BitConverter.ToString(buffer, 0, count));
Secondly, be aware of byte ordering issues when interpreting a byte stream as binary integers. If you don't know for certain that both sender and receiver will be using the same byte ordering, then consider using Network Byte Order (aka Big Endian) for your multi-byte binary values.
For example, assuming your c# socket app is running on Windows, your 64-bit integer value is likely going to be stored as little endian:
long le_value = 0x0807060504030201; // "01-02-03-04-05-06-07-08"
long be_value = IPAddress.HostToNetworkOrder(le_value); // "08-07-06-05-04-03-02-01"
To convert a received network byte order value back to little endian:
ulong le_value = IPAddress.NetworkToHostOrder(be_value);
Hope that helps.