Thank you kindly for the reply.
It's true the IP packet layer sits below the TCP layer in the Stack. And yes TCP is essentially involved in controlling transmissions ("send and recieve streams"

as the name suggests.
I can't see that I have suggested otherwise or used the term "TCP Message" anywhere. Where I have used the word message:
Client <--- (TCP/IP DATA:LOGIN_RESP MSG) --- Simulator Sw
I am reffering to the proprietary messages which are being transported over TCP/IP (in the data portion of the packet(s)/segments) between the Client and Server Apps. (Hence "TCP/IP DATA:"

.
In my case the proprietary messages are small enough to fit inside a packet/segment, which does make writing the client simpler. (Rather then reconstructing from the various segments).
"So a simulator has to have some idea what the traffic is about, to know when it should send even canned replies back to the client."
No it doesn't. The simulator merely has to:
1) Listen for incoming connections and establish.(I.E. respond to incoming SYN segment with its own SYN + ACK segment).
2) Recieve the incoming packets and display the data layer so I can see if the proprietary message is correct. (NOTE: Something which most simulators/sniffers can do).
3) Send the Data I specify (by file or shell or GUI) back to the client in the data portion of a TCP/IP packet/segment, setting the (sequence number)/(ack no)/(checksum) in the header accordingly.
The data sits above the TCP layer and so its meaning has little or no bearing on TCP protocol functionality. The protocol only facilitates the correct transmission of X bytes from A to B. Segmentation, Sequencing, Acknowledgement, etc but NO interpretation.
I am suprised no such software exists. Without it, testing a TCP/IP based client/server would have to be done by generating packets/segments manually.
Do people test new clients directly on mission critical servers???
I am new to writing clients for TCP/IP based servers. But when interconnecting telecoms switches for example you must first prove your switch complies to the various protocol specs. (I.E. Q763 for ISUP). The same applies for ATM switches, SDH ADM's, etc... (For all these protols I have found test tools which do a similar job).
Sorry for digressing at the end...