I'm not great with the technical words involving TCP and UDP so bear with me.
Port forwarding and stuff like that is not so much of a problem at the moment, since I am either testing on a single machine with client and server open, or over a LAN.
"Unless the client sent a message to the server first"
The client is sending both TCP and UDP messages to the server. Perhaps I am not understanding you correctly or perhaps I didn't explain myself right.
The client connects a TCP socket to the server, and a UDP port to the server. The server accepts the TCP socket, then connects back to the client's UDP socket. Then the client starts sending stuff on TCP and UDP. The server picks them both up and sends TCP and UDP back. The problem lies in that the client only receives TCP from the server at this point, not UDP.
Port forwarding and stuff like that is not so much of a problem at the moment, since I am either testing on a single machine with client and server open, or over a LAN.
"Unless the client sent a message to the server first"
The client is sending both TCP and UDP messages to the server. Perhaps I am not understanding you correctly or perhaps I didn't explain myself right.
The client connects a TCP socket to the server, and a UDP port to the server. The server accepts the TCP socket, then connects back to the client's UDP socket. Then the client starts sending stuff on TCP and UDP. The server picks them both up and sends TCP and UDP back. The problem lies in that the client only receives TCP from the server at this point, not UDP.