I have an embedded application that receives command messages on one TCP port and responds with data messages on a second TCP port.  
I wrote a LabWindows app to act as a test station for the end-product.  When the test software is configured to transmit messages only (ignoring responses) as a client, my end-product receives 100% of the messages.  When the test software is configured to receive messages only (does not issue command messages), 100% of end-product transmissions are received.  
So far, so good, but now comes the fun part...
The test software is supposed to transmit a message on the command (or uplink) port and then listen for the response on the data (or downlink) port.  
As part of the test software initialization, I register the test software as a TCP server using RegisterTCPServer and connect to the end-product using ConnectToTCPServer for downlink data.
I have two TCP CVI callback functions, one for uplinks and one for downlinks.
Uplink messages are sent using ClientTCPWrite.  Downlink messages are handled via the TCP downlink callback function and ServerTCPRead.
When the test software is shutdown, calls are made to UnregisterTCPServer and DisconnectFromTCPServer.
The above works great the first time a message is sent.  The second time, the command message is sent, but no data is received.  
I have fairly well exhausted the possibilities of this being an end-product problem.  So, now I am wondering if LabWindows/CVI apps can  simultaneously act as a TCP client and server.
Thoughts?