Hi,
yes, it's a stupid question, but it's worth replying. Mind, it's stupid mostly because you didn't notice that you already have this feature...
If you check TcpResponder::HandleRead (Ptr<Socket> socket), each time a packet is received, the Rx socket is passed as an argument. Moreover, the received packet can be inspected to find out the Tx IP/port and the Rx IP/port. This should be more than enough to enable what you said.
Moreover, the socket passed to HandleRead is already stored in the m_socketList container (it's saved there during the connect). However, I wouldn't use the container if not to have a sanity check. You already have a pointer to the socket, you can pass that to another function though a direct call or a Scheduled event.
As I said, the question isn't stupid per-se. It is because you already have all you need, and you just didn't notice :)
Hope this helps,
T.