Существует много литературы о том, как сеансы реализованы в мире Web (HTTP).
Одним из ключей является то, закрываете ли вы клиентские соединения или они постоянны? Если они постоянны, просто идентифицируйте их по ссылке на объект. Если нет, то ...
1) Вы можете выполнять простые сеансы на основе исходного IP-адреса. Но если несколько клиентов находятся за брандмауэром NAT с общим IP-адресом, это не сработает, см. Следующий вариант.
2) Использовать «cookie»
3) Использовать аутентификацию для идентификации каждого клиента
Каждая опция, кроме сеансов на основе IP, требует добавления чего-либо в сам протокол.
Некоторые вещи, которые нужно помнить с помощью сокетов. Удаленный IP + удаленный порт однозначно идентифицирует клиентский TCP-сокет. Несколько подключений от одного и того же удаленного клиента будут иметь разные удаленные порты. Но вы не можете полагаться на это, если сокет закрывается, потому что удаленная ОС может перезапустить удаленный порт для нового соединения после истечения срока действия старого.