Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мессенджер локальной сети

1.9K
16 апреля 2009 года
Goblin
55 / / 02.03.2004
Есть задание для дальнейшего собеседования на работу:

Создать программу обмена текстовыми сообщениями в локальной сети.


Мною был предложен вариант сервера и клиента, на что я получил ответ, что никакого сервера не должно запускаться.
Возможно ли создание такого мессенджера без сервера?
@@@@@@@@@@@@@@@@@@
Всем спасибо!
Решение найдено!
Пользуйтесь UDP.
1.9K
16 апреля 2009 года
andriano
474 / / 10.01.2008
Вообще-то непосредственно из формулировки необходимость серевера неочевидна.
Если же сервер, все-таки, требуется, то он не обязан быть выделенным - его можно создавать динамически, предусмотрев клиентскую и серверную части в одной программе.
288
16 апреля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: andriano
Вообще-то непосредственно из формулировки необходимость серевера неочевидна.



Я бы даже сказал, сказал совсем неочевидна. Сколько видел я Messendger'ов для локальной сети, все они были без выделенного сервера.

[QUOTE=Goblin;]
Пользуйтесь UDP
[/QUOTE]

Кстати, использование UDP совсем не обязательно.

1.9K
16 апреля 2009 года
Goblin
55 / / 02.03.2004
Ну коли так - уточняю задание и прошу наставить на путь истинный.

Создать программу обмена текстовыми сообщениями в локальной сети, удовлетворяющую
требованиям:
1) Одновременно в локальной сети (в том числе и на одном компьютере) могут быть
запущены один или более экземпляров программы.
2) Программа получает имя пользователя (login) как параметр командной строки. Если при
старте программы пользователь с таким именем уже существует on-line, то программа
должна выдать сообщение об ошибке и завершиться.
3) Программа должна предоставлять возможность получить список всех пользователей,
находящихся on-line.
4) Программа должна предоставлять возможность отправлять и получать текстовые
сообщения (длина не ограничена) другому пользователю, находящемуся on-line.


Вот что получается - никаких ip и портов у нас нету. Неужели если юзать TCP, то надо стучаться по всей подсети?
288
16 апреля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Goblin
Вот что получается - никаких ip и портов у нас нету. Неужели если юзать TCP, то надо стучаться по всей подсети?



При такой постановке задачи я не прав. Просто думал, что идентификацию клиентов легче производить по IP.

1.9K
18 апреля 2009 года
Goblin
55 / / 02.03.2004
Господа! Даже при использовании udp возникает проблема запуска нескольких приложений на одной машине.
Если мы запускаем второе приложение, то прослушиваемый порт надо менять. Но широковещательные пакеты будут идти на старый порт.

Возможно есть способ прослушивания одного порта двумя приложениями?
255
18 апреля 2009 года
Dart Bobr
1.4K / / 09.04.2004
Генерируй для каждого клиента по гуиду. Потом идентифицируй пакеты по гуидам.
1.9K
18 апреля 2009 года
Goblin
55 / / 02.03.2004
Цитата: Dart Bobr
Генерируй для каждого клиента по гуиду. Потом идентифицируй пакеты по гуидам.



Проблема не в идентификации.
Допустим, при открытии мессенджера мы шлем широковещательный пакет на порт 8080 и сидим слушаем на том же порту(вдруг другой мессенджер появится). Тут вдруг преспичило нам еще один экземпляр мессенджера открыть на этой же машине. Broadcast на 8080, а дальше??? Какой порт слушать? 8080 - занят!

12
19 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Goblin

Тут вдруг преспичило нам еще один экземпляр мессенджера открыть на этой же машине. Broadcast на 8080, а дальше??? Какой порт слушать? 8080 - занят!


Ну и делай мастер процесс/тред. При запуске приложения проверять, существует ли мастер процесс, если нет пускаем его. А мессенжер пусть общает только с этим процессом и ни с кем другим.

Т.е. банальная схема веб серверов - один слущающий сокет процесс и куча дочерних (рабочих/worker) процессов который в твоем случае будут запускаемые копии мессенджера. Имхо, алгоритм в наше время обсасаный по самое нихачу...

1.9K
19 апреля 2009 года
Goblin
55 / / 02.03.2004
Большое спасибо!
Очень помогли!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог