Частично это зависит от платформы и доступных услуг. Я собираюсь предположить, что окна из-за тега C # (хотя я знаю, что это может быть на Linux или даже iphone из-за моно).
Если правильные порты открыты и службы запущены, вы можете использовать NET SEND для передачи сообщения всем машинам в данном домене. ( Пример ).
Если net send не работает для вас, вам понадобится как минимум клиентское приложение, способное объявить о своем присутствии любому желающему прослушать. Так работала Windows для рабочих групп в прошлые дни. Вы захотите использовать какой-либо тип UDP-вещания.
Для более надежного решения вам также потребуется сервер, на который клиенты заходят. При запуске клиентское приложение свяжется с сервером и сообщит, что оно доступно. Сервер запишет адрес, с которого пришел клиент. Для местной службы чата это достаточно хорошо. Когда для этого клиента приходит сообщение, сервер просто пересылает его.
К сожалению, из-за множества сетевых ограничений это не всегда работает хорошо. Если с задержкой все в порядке, то вы можете просто каждый клиент периодически проверять на сервере, чтобы увидеть, есть ли новые сообщения (вроде электронной почты).
Если высокая задержка не устраивает, клиент должен будет поддерживать открытый сокет на сервере, чтобы сервер мог немедленно отправить сообщение по сети. (вроде как работает обмен).
Независимо от этого, сервер лучше всего подходит, если клиенты распределены по нескольким сетям или существуют политики безопасности, предотвращающие обнаружение удаленных приложений. Между прочим, большинство механизмов обнаружения сегодня включают сканирование локальной подсети для определенного открытого порта. Клиент прослушивает этот порт и отвечает на сканирование. Я бы не рекомендовал такой подход.