Do you have the exact specifications on what the server expects?
Typically, the threeway handshake for TCP connections (SYN, SYN/ACK, ACK) must be complete before data can be sent. The server MUST respond with a SYN/ACK packet no matter what.
Could it be that the server expects certain IP or TCP options in the initial SYN packet???
Are you sure this is TCP? Could it be UDP? Since UDP is a stateless protocol, it would be more natural to be used to send one-sided data since no connection needs to be established.
Could you hook up a packet sniffer and record a communication exchange using a working client and post it here? I would be very curious to see what is happening on the packet level.