Мессенджер локальной сети
Создать программу обмена текстовыми сообщениями в локальной сети.
Мною был предложен вариант сервера и клиента, на что я получил ответ, что никакого сервера не должно запускаться.
Возможно ли создание такого мессенджера без сервера?
@@@@@@@@@@@@@@@@@@
Всем спасибо!
Решение найдено!
Пользуйтесь UDP.
Если же сервер, все-таки, требуется, то он не обязан быть выделенным - его можно создавать динамически, предусмотрев клиентскую и серверную части в одной программе.
Я бы даже сказал, сказал совсем неочевидна. Сколько видел я Messendger'ов для локальной сети, все они были без выделенного сервера.
[QUOTE=Goblin;]
Пользуйтесь UDP
[/QUOTE]
Кстати, использование UDP совсем не обязательно.
Создать программу обмена текстовыми сообщениями в локальной сети, удовлетворяющую
требованиям:
1) Одновременно в локальной сети (в том числе и на одном компьютере) могут быть
запущены один или более экземпляров программы.
2) Программа получает имя пользователя (login) как параметр командной строки. Если при
старте программы пользователь с таким именем уже существует on-line, то программа
должна выдать сообщение об ошибке и завершиться.
3) Программа должна предоставлять возможность получить список всех пользователей,
находящихся on-line.
4) Программа должна предоставлять возможность отправлять и получать текстовые
сообщения (длина не ограничена) другому пользователю, находящемуся on-line.
Вот что получается - никаких ip и портов у нас нету. Неужели если юзать TCP, то надо стучаться по всей подсети?
При такой постановке задачи я не прав. Просто думал, что идентификацию клиентов легче производить по IP.
Если мы запускаем второе приложение, то прослушиваемый порт надо менять. Но широковещательные пакеты будут идти на старый порт.
Возможно есть способ прослушивания одного порта двумя приложениями?
Проблема не в идентификации.
Допустим, при открытии мессенджера мы шлем широковещательный пакет на порт 8080 и сидим слушаем на том же порту(вдруг другой мессенджер появится). Тут вдруг преспичило нам еще один экземпляр мессенджера открыть на этой же машине. Broadcast на 8080, а дальше??? Какой порт слушать? 8080 - занят!
Тут вдруг преспичило нам еще один экземпляр мессенджера открыть на этой же машине. Broadcast на 8080, а дальше??? Какой порт слушать? 8080 - занят!
Ну и делай мастер процесс/тред. При запуске приложения проверять, существует ли мастер процесс, если нет пускаем его. А мессенжер пусть общает только с этим процессом и ни с кем другим.
Т.е. банальная схема веб серверов - один слущающий сокет процесс и куча дочерних (рабочих/worker) процессов который в твоем случае будут запускаемые копии мессенджера. Имхо, алгоритм в наше время обсасаный по самое нихачу...
Очень помогли!