широковещательная рассылка

 
0
 
.NET
ava
retto | 20.12.2007, 23:37
есть программа которая работает по сети. ЕСли пользователь вкл эту программу, необходимо "отобразить" это у других пользователей. Поискал, покопался в литературе, нашел только то что это можно сделать широковещательной рассылкой. Но как это сделать понятия не имею.

З.Ы. Буду рад любой помощи smile
Comments (10)
ava
VisualProgrammerNET | 21.12.2007, 18:12 #
На сервере в базе данных хранишь состояния клиентских программ пользователей (вкл/выкл). Когда пользователь входит в программу, отсылается сигнал на сервер, что включилась. Выходит из программы, обратный сигнал. Плюс клиенсткие программы раз в промежуток времени читают эту базу, выявляя, кто в онлайне, кто нет. Всё просто.
ava
mr.DUDA | 21.12.2007, 19:46 #
Копать в сторону класса UdpClient и вообще всего связанного с протоколом UDP. Это на случай, если способ выше не прокатит (если сервера нету).
ava
retto | 21.12.2007, 20:45 #
mr.DUDA, спасибо, нашел.
кстати сервера действительно нету (был бы сервер я б не спрашивал как это сделать)
ava
VisualProgrammerNET | 21.12.2007, 20:52 #
А как без сервера такое провернуть? Допустим работают 5 программ: 1 в России, 2 в Америке, 2 в Австралии. Запустилась в Китае ещё одна. И куда эта китайская будет обращаться, чтобы сказать, что "вот она я"?
ava
retto | 21.12.2007, 21:35 #
вот немножко полезной литературы по широковещательным сообщениям http://msdn.microsoft.com/library/rus/cpgu...udpservices.asp

VisualProgrammerNET, помойму для таких случаев без сервера не обойдешься
ava
VisualProgrammerNET | 21.12.2007, 21:57 #
Ну так я утверждаю как раз, что не обойдёшься =) А ты собираешься для локалки что ли программу писать?
ava
mr.DUDA | 22.12.2007, 13:18 #
Цитата (retto @ 20.12.2007, 22:37 findReferencedText)
есть программа которая работает по сети

Судя по всему, именно о локальной сети идёт речь.
ava
retto | 01.01.2008, 20:52 #
надо прослушать все адреса подсети используя UdpClient. создал UdpClient для широковещательной отправки сообщений. Создаю UdpClient для приема сообщений с группы адресов:

// bool done = false;
IPAddress GroupAddress = IPAddress.Parse("192.168.1.255");
int GroupPort = 11000;


UdpClient listener = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);

try
{
listener.JoinMulticastGroup(GroupAddress);
listener.Connect(groupEP);
// while (!done)
// {
byte[] bytes = listener.Receive(ref groupEP);

rc.AppendText(Encoding.ASCII.GetString(bytes, 0, bytes.Length));
// }
listener.Close();
}

но постоянно ругается на listener.JoinMulticastGroup(GroupAddress), пишет что "получен недопустимый аргумент. Не врублюсь что ему не нравится smile
ava
tol05 | 01.01.2008, 21:12 #
Цитата


The JoinMulticastGroup method subscribes the UdpClient to a multicast group using the specified IPAddress. After calling the JoinMulticastGroup method, the underlying Socket sends an Internet Group Management Protocol (IGMP) packet to the router requesting membership to the multicast group. The multicast address range is 224.0.0.0 to 239.255.255.255. If you specify an address outside this range or if the router to which the request is made is not multicast enabled, UdpClient will throw a SocketException.


Диапазон адресов для multicast обмена - "224.0.0.0 to 239.255.255.255"
описание стандарта
ava
retto | 02.01.2008, 15:19 #
спс!
но всеравно когда я подключаюсь к группе многоадрессной расслыки "вылазит" ошибка "получен недопустимый аргумент". Хотя делаю все какбы по правилам smile

IPAddress GroupAddress = IPAddress.Parse("224.168.100.2");
IPAddress ip = IPAddress.Parse("192.168.1.6");
const int GroupPort = 13001;

bool done = false;

UdpClient listener = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);


listener.JoinMulticastGroup(ip,GroupAddress);
listener.Connect(groupEP);

while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);

richTextBox1.AppendText("Received broadcast from {0} :\n {1}\n" +
groupEP.ToString() +
Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}
listener.Close();
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit