| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > WPF. Обмен мгновенными сообщениями в локальной сет |
| Автор: ad12 18.9.2010, 10:42 |
| Добрый день. Есть небольшая локальная сеть. На каждой рабочей станции загружается приложение WPF. Нужно организовать обмен короткими сообщениями между этими приложениями. Чтобы сообщение, адресованное конкретной рабочей станции, попадало в соответствующий управляющий элемент на интерфейсе приложения. Как такое сделать? Кто-нибудь знает? |
| Автор: WolfTheGrey 18.9.2010, 13:15 |
| знаем, но эта тема на докторскую диссертацию тянет |
| Автор: Kaerus 18.9.2010, 16:07 |
| Ты бы хотя бы уточнил 1) как машины будут обмениваться сообщениями (сокеты, WCF, пайпы или чего еще) 2) что значит "сообщение, адресованное конкретной рабочей станции" а то так получается что ты хочешь что-то типа "Magic Remote Binding" А то что у тебя лок. сеть это вообще ничего не меняет, в локалке так-же сеть может отвалиться на любой машине |
| Автор: WolfTheGrey 19.9.2010, 00:15 |
| Kaerus, афтор имеет в виду приложение вроже маленького чата, где месаги летят не всем пользователя а конкретному лицу, типо привата. Такое организовать возможно при помоши UDP протокола и фильтрации адресованого покета. Осталось узнать в каком виде афтор желает сей девайс видеть. или вид девайса автор сам напишет? |
| Автор: Kaerus 19.9.2010, 01:29 |
| WolfTheGrey Зачем же тогда такой акцент на "попадало в соответствующий управляющий элемент на интерфейсе приложения" и если уж тема в разделе "WPF & Silverlight" я думаю автора интересует нечто большее чем обмен данными по UDP В общем хотелось бы, от автора услышать пояснения |
| Автор: WolfTheGrey 19.9.2010, 05:45 |
| акцент на "попадало в соответствующий управляющий элемент на интерфейсе приложения" я так думаю это и есть общение в приват, чтоб сообщение мог прочитать только избранный. |
| Автор: Exai1e 19.9.2010, 11:03 |
| http://www.progblog.ru/Posts/WCF-Chat можно сделать и с использованием обычных сокетов, только потребуется сервер, который будет принимать подключения/сообщения и отсылать их адресату |
| Автор: ad12 19.9.2010, 14:58 |
| Спасибо всем, что откликнулись. Дело в том, что в сетевых приложениях я не силён. Нужно ли тут клиент-серверная архитектура? Т.е. надо ли писать и клиентскую и серверную часть? Где тут копать? И если это тянет на докторскую - может, взять какой-нибудь готовый чат. Только как его интегрировать с моим? Чтоб всё происходило внутри моего WPF- интерфейса. Т.е. давлю кнопку на интерфейсе, в окошко набираю короткое сообщение, выбираю адрес, OK, и оно всплыло у адресата. Вот. |
| Автор: WolfTheGrey 19.9.2010, 16:00 |
| Нужно ли тут клиент-серверная архитектура? Т.е. надо ли писать и клиентскую и серверную часть? Сервер нужен, по другому ни как. Да и если клиента не будет в сети то, можно задержать отправку сообщения на сервере. а вообще тебе надо сюда:http://forum.vingrad.ru/forum/dotnet-distributed-network-net-app-csharp.html |
| Автор: ad12 19.9.2010, 18:09 |
| А если с каждой рабочей станции отправлять пакет с сообщением в сеть, он разлетается по сети, а на каждом приложении на раб.станциях висит программа слушатель-перехватчик, она проверяет адрес, и если адрес его - принимает сообщение, если нет - игнорирует... |
| Автор: Exai1e 19.9.2010, 20:26 | ||
можешь сделать так - есть программа сервер, в ее задачу входит принимать подключения, и принимать сообщения. когда ты отсылаешь серверу текст для какой либо машины "маркинуеш" его "меткой" для кого именно это сообщение предназначено, это может быть и строка "|CompName|Message|" которую будешь парсить на сервере, получая из нее "CompName" и именно этому компьютеру в итоге отсылать данные из части строки "Message". Это может быть сериализованный объект (что удобнее), это может быть WCF сервис реализующий Callback. Надо выбирать технологию и/или методы решения проблемы исходя из задачи.
интерфес вообще не важен, это может быть хоть консольная апликуха, хоть WinForms хоть WPF, для начала реализуй логику приложения (общение между сервером и клиентами) а уж то что сделаешь, сможешь прикрутить к любому GUI |
| Автор: ad12 21.9.2010, 13:44 |
| А если вот так (попроще): На сервере есть расшаренная папка. Приложение на рабочей станции кладёт в эту папку сообщение с меткой кому. В то же время на каждой раб.станции висит модуль, который периодически опрашивает эту папку на наличие адресованных этой станции сообщений. Если есть, он его читает и удаляет файл. И всё |
| Автор: Exai1e 21.9.2010, 14:51 | ||
| ad12, раз есть "сервер с папкой" то зачем нужна папка, если можно написать простенький "сервер" в виде по (хоть консольное приложение, которое будет висеть в фоне и делать свою работу), которое будет хранить ваше сообщения и отсылать их подключившимся клиентам. достаточно обычных сокетов. (system.net.sockets) если сообщения это обычные string объекты
compname - пусть это хоть IP адрес, хоть логин по которому будут подключатся клиенты к серверу, да что угодно) главное для себя это решить зы. постоянно "читать" папку с файлами на наличие новых сообщений - не лучшее решение, имхо зыы. толи у меня так отображается, толи не знаю - все сообщение идет как большая цитата |
| Автор: ad12 21.9.2010, 15:46 |
| Спасибо, Exai1e. А можно, если нетрудно, немножко C# кода простенького сервера. (Я никогда не писал серверных приложений |
| Автор: Exai1e 21.9.2010, 17:00 |
| ad12, в интернете довольно много разнообразных примеров, как для совсем начинающих с подробностями так и более "продвинутые" попробуйте поискать по словами C# Sockets, System.Net.Sockets, Чат C# Сокеты и т.д. например вот, общий пример http://www.xndcrew.org/?module=articles&c=articles&b=2&a=12 http://wincode.org/programming/soketi-v-net-sozdanie-chata/ ну и т.д. |
| Автор: userdab 22.9.2010, 18:38 |
| http://social.msdn.microsoft.com/Forums/ru-RU/csharpru/thread/48fe63d9-480f-4f29-b98d-ec5f5f720f3d и еще http://www.microsoft.com/Rus/Msdn/Magazine/2005/08/Winsock.mspx |