В ClientSocket и ServerSocket должен быть цикл, поддерживающий связь в активном состоянии.
В противном случае: Должны быть реализованы как сокет клиента, так и сокет сервера со всех сторон (все устройства отправителя и получателя). Когда серверный сокет A получает сообщение, чтобы ответить назад, должен быть клиентский сокет, который отвечает обратно на серверный сокет B, который находится в приложении отправителя на его устройстве.
Таким образом, все устройства с серверным сокетом с одинаковым портом могут обнаруживать и отправлять сообщения друг другу.
Конечно, IP-адрес отправителя должен быть сохранен для ответа.