When you want to receive data on one socket and send data on the defferent socket then i would say let your client and server have both client socket and server sockets .
Client application will have server socket and client socket capability.
Server application will have server socket and client socket capability.
I mean like open a server socket on server and listen for client. once the client makes a connection to server send information of the client(like its the host Ip and port where it listening ) and now server will use this information(ip and port of the client) and connects to the client. so this way one socket can used for sending and another can be used for receiving.(This type connection is used by CuteFTP if i am not wrong).
This is best way what i can thing of, as we also used such type of communication.
hope this helps