We currently have a C++ socket server used by a java client. All of the socket code in both C++ and java is stick-built at a low-level with messages passed via JSON strings.Are there cots packages or better techniques commonly used in this situation to reduce the cost of future development and maintenance?
Best practice for writing a service
design;programming practices
Seems your only issue is the client communication protocol - which I assume is a custom thing. This isn't necessarily a problem. RPC mechanisms like Google's Protocol Buffers requires you to define your packet contents anyway, but there are loads of existing communications systems  that might help you.Web services are good for interop, as they're mostly standard (just be aware that WCF ones do not work fully with Java or PHP web services), but they're relatively slow. Thrift is a souped up RPC, or ZeroMQ is a good messaging system. Any of these might help take the comms factor out of your problem.