If I understand correctly, TCP has no standard mechanism for this, which means that we can do many things, and need to find the appropriate way of providing what you need.
In DevTest, VSM files can use the "Socket Server" step as a listener and as a responder. I have a VSM that listens on a defined port, and when it receives input to that port, it decides how to respond. If the input is "hello" followed by a newline, it responds with the lyrics to a Lionel Richie song, using each line as a response and with a second between each response.
To test it, deploy the virtual service (it'll show up as a HTTP service on port 8001) and then telnet to the VSE machine on port 8001. You will get a blank response. Type in any string and hit <return> and it'll prompt you.
To support different messages, you can change the data set attached to the response socket servers. Supporting two responses is as easy as changing the "end of data" RegExpression to "2".
This does not bother with VSI files at all - it's a pure VSM-based responder for TCP sockets. Therefore it does nothing like auto-correlation, time-shifting, think time specifications, stateful transactions, etc. I created this virtual service as a joke to thwart developers running "telnet ping" as a test against my deployed HTTP virtual services, as it's a poor test and can cause problems.
I have attached my VSM to this message.
Does this meet your requirement? If not, can you expand on it? I'm sure DevTest can do what you want, but we'll need to know more about what you need to see.