![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| ad12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2010 Репутация: нет Всего: нет |
Добрый день.
Есть небольшая локальная сеть. На каждой рабочей станции загружается приложение WPF. Нужно организовать обмен короткими сообщениями между этими приложениями. Чтобы сообщение, адресованное конкретной рабочей станции, попадало в соответствующий управляющий элемент на интерфейсе приложения. Как такое сделать? Кто-нибудь знает? |
|||
|
||||
| WolfTheGrey |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 21.1.2009 Где: forum.vingrad.ru Репутация: 2 Всего: 2 |
знаем, но эта тема на докторскую диссертацию тянет
|
|||
|
||||
| Kaerus |
|
|||
|
WPF'er ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.9.2010 Репутация: 1 Всего: 1 |
Ты бы хотя бы уточнил
1) как машины будут обмениваться сообщениями (сокеты, WCF, пайпы или чего еще) 2) что значит "сообщение, адресованное конкретной рабочей станции" а то так получается что ты хочешь что-то типа "Magic Remote Binding" А то что у тебя лок. сеть это вообще ничего не меняет, в локалке так-же сеть может отвалиться на любой машине |
|||
|
||||
| WolfTheGrey |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 21.1.2009 Где: forum.vingrad.ru Репутация: 2 Всего: 2 |
Kaerus, афтор имеет в виду приложение вроже маленького чата, где месаги летят не всем пользователя а конкретному лицу, типо привата.
Такое организовать возможно при помоши UDP протокола и фильтрации адресованого покета. Осталось узнать в каком виде афтор желает сей девайс видеть. или вид девайса автор сам напишет? |
|||
|
||||
| Kaerus |
|
|||
|
WPF'er ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.9.2010 Репутация: 1 Всего: 1 |
WolfTheGrey
Зачем же тогда такой акцент на "попадало в соответствующий управляющий элемент на интерфейсе приложения" и если уж тема в разделе "WPF & Silverlight" я думаю автора интересует нечто большее чем обмен данными по UDP В общем хотелось бы, от автора услышать пояснения |
|||
|
||||
| WolfTheGrey |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 21.1.2009 Где: forum.vingrad.ru Репутация: 2 Всего: 2 |
акцент на "попадало в соответствующий управляющий элемент на интерфейсе приложения"
я так думаю это и есть общение в приват, чтоб сообщение мог прочитать только избранный. |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
http://www.progblog.ru/Posts/WCF-Chat
можно сделать и с использованием обычных сокетов, только потребуется сервер, который будет принимать подключения/сообщения и отсылать их адресату -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| ad12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2010 Репутация: нет Всего: нет |
Спасибо всем, что откликнулись.
Дело в том, что в сетевых приложениях я не силён. Нужно ли тут клиент-серверная архитектура? Т.е. надо ли писать и клиентскую и серверную часть? Где тут копать? И если это тянет на докторскую - может, взять какой-нибудь готовый чат. Только как его интегрировать с моим? Чтоб всё происходило внутри моего WPF- интерфейса. Т.е. давлю кнопку на интерфейсе, в окошко набираю короткое сообщение, выбираю адрес, OK, и оно всплыло у адресата. Вот. |
|||
|
||||
| WolfTheGrey |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 21.1.2009 Где: forum.vingrad.ru Репутация: 2 Всего: 2 |
Нужно ли тут клиент-серверная архитектура?
Т.е. надо ли писать и клиентскую и серверную часть? Сервер нужен, по другому ни как. Да и если клиента не будет в сети то, можно задержать отправку сообщения на сервере. а вообще тебе надо сюда:http://forum.vingrad.ru/forum/dotnet-distributed-network-net-app-csharp.html Присоединённый файл ( Кол-во скачиваний: 5 )
WindowsTcpServer.zip 105,97 Kb |
|||
|
||||
| ad12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2010 Репутация: нет Всего: нет |
А если с каждой рабочей станции отправлять пакет с сообщением в сеть,
он разлетается по сети, а на каждом приложении на раб.станциях висит программа слушатель-перехватчик, она проверяет адрес, и если адрес его - принимает сообщение, если нет - игнорирует... |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
можешь сделать так - есть программа сервер, в ее задачу входит принимать подключения, и принимать сообщения. когда ты отсылаешь серверу текст для какой либо машины "маркинуеш" его "меткой" для кого именно это сообщение предназначено, это может быть и строка "|CompName|Message|" которую будешь парсить на сервере, получая из нее "CompName" и именно этому компьютеру в итоге отсылать данные из части строки "Message". Это может быть сериализованный объект (что удобнее), это может быть WCF сервис реализующий Callback. Надо выбирать технологию и/или методы решения проблемы исходя из задачи.
интерфес вообще не важен, это может быть хоть консольная апликуха, хоть WinForms хоть WPF, для начала реализуй логику приложения (общение между сервером и клиентами) а уж то что сделаешь, сможешь прикрутить к любому GUI -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| ad12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2010 Репутация: нет Всего: нет |
А если вот так (попроще):
На сервере есть расшаренная папка. Приложение на рабочей станции кладёт в эту папку сообщение с меткой кому. В то же время на каждой раб.станции висит модуль, который периодически опрашивает эту папку на наличие адресованных этой станции сообщений. Если есть, он его читает и удаляет файл. И всё |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
ad12, раз есть "сервер с папкой" то зачем нужна папка, если можно написать простенький "сервер" в виде по (хоть консольное приложение, которое будет висеть в фоне и делать свою работу), которое будет хранить ваше сообщения и отсылать их подключившимся клиентам. достаточно обычных сокетов. (system.net.sockets)
если сообщения это обычные string объекты
compname - пусть это хоть IP адрес, хоть логин по которому будут подключатся клиенты к серверу, да что угодно) главное для себя это решить зы. постоянно "читать" папку с файлами на наличие новых сообщений - не лучшее решение, имхо зыы. толи у меня так отображается, толи не знаю - все сообщение идет как большая цитата Это сообщение отредактировал(а) Exai1e - 21.9.2010, 14:53 -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| ad12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2010 Репутация: нет Всего: нет |
Спасибо, Exai1e.
А можно, если нетрудно, немножко C# кода простенького сервера. (Я никогда не писал серверных приложений |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
ad12, в интернете довольно много разнообразных примеров, как для совсем начинающих с подробностями так и более "продвинутые"
попробуйте поискать по словами C# Sockets, System.Net.Sockets, Чат C# Сокеты и т.д. например вот, общий пример http://www.xndcrew.org/?module=articles&am...mp;b=2&a=12 http://wincode.org/programming/soketi-v-net-sozdanie-chata/ ну и т.д. Это сообщение отредактировал(а) Exai1e - 21.9.2010, 17:01 -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| userdab |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 3.9.2010 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |