Программа Статуса Пк

  • Автор темы leclet
  • Дата начала
L

leclet

Гость
#1
Помогите написать следующее!!!
Создаю программу, точней несколько программ в одном комплексе.
1 - мини браузер, который сидит в трее и отображает одну страницу, при этом на сервере через php и базу sql должен определяться статус онлайн.
2 - программа считывающая этот статус и выводить это в Label.

Короче говоря мне надо что бы на одном компе отображалось, включен ли другой ПК. Этот способ вроде лучшее что мне пришло в голову, если нет, посоветуйте что можно сделать. Сразу скажу, компьютеры находятся не в локальной сети, и оба подключены к интернету через роутер, так что по IP не предлагать.

Заранее спасибо!

язык C#
 
09.06.2010
107
0
#2
Если нет возможности установить связь между компьютерами (оба находятся за NAT/фаерволом) то передать сообщение можно только через "третье" лицо.

Если "третьим" лицом является комп, куда вы можете поставить свой софт, тогда просто поставьте там программу, которая принимает сообщения по какому-то порту и запоминает дату последнего сообщения, и на конкретный пакет по тому же порту отвечает списком айпишников которые к ней обращались и дат последнего сообщения. Можно сделать так, чтобы в сообщении серверу от компьютера передавался скажем код компьютера, или его имя, тогда и по запросу можно выдавать не айпишник а этот код.

Т.е. первая программа запускается на отслеживаемом, ей указывается что за строку передавать и с каким интервалом и по какому адресу, она по таймеру устанавливает соединение и передает пакет с содержимым "ONLINE:<Что_передавать>"по этому адресу. Когда её закрывают она передает пакет "OFFINE:<Что_передавать>" по этому же адресу.

Вторая программа запускается на сервере и просто принимает соединения на указанный в ней (в окошке или в конфиг файле) порт. При поступлении запроса на соединение соглашается, принимает одно сообщение и разрывает соединение, сохраняет в массив дату обращения и сообщение (или обновляет строку массива) и булеан - было ли это сообщение типа "онлайн" или "оффлайн". На получение сообщения "QUERY:" высылает в ответ весь массив.

Третья программа подсоединяется к указанному адресу и посылает особый пакет (скажем с иным префиксом в сообщении) на который сервер отвечает передачей текущего своего массива. Затем вы уже из массива выясняете, что вам надо.

В C# есть готовые компоненты для соединения по сети, очень простые.

Если же "третьим" лицом является веб сервер с php и sql, то да, аналогичное можно реализовать даже без окна браузера - просто посылаете POST или GET запрос (скажем, GET страницы с указанием типа сообщения - онлайн или оффлайн, и кода/имени, т.е. аналогично как если бы вы в браузере набрали myserver.ru/myscript.php?status=online&code=MYPC1). А при запросе через нормальный браузер уже страницы скажем status.php выводить таблицу которая сейчас хранится в sql базе.