Страница 1 из 2

Как передать сообщение зная IP?

СообщениеДобавлено: 27.01.2012 02:36:10
VinSS
Никогда с сеткой не работал, даже не знаю с чего начать.
Есть БД, к которой напрямую есть доступ только у некоторых сотрудников. Программа делает определенную выборку. В выборке список заданий и сотрудников, которым они назначены. Получается можно сказать серверная часть. Надо сделать клиентскую (например, просто значек в трее), в которую будет передаваться сообщение с заданием, а оно будет всплывать у значка в трее.
Собственно понимаю как сделать все, кроме передачи сообщения, подскажите хоть в каком направлении копать, что почитать, на какие операторы обратить внимание, да хоть как в гугле правильный запрос составить, чтобы найти то, что мне нужно.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 27.01.2012 02:49:54
Максим
Нет, ну что за люди, а?

http://bit.ly/wl3Itn

viewtopic.php?f=5&t=7721

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 27.01.2012 07:31:35
SSerge
VinSS
Не надо на клиенте входящие запросы организовывать!
Поимеете массу проблем, если клиент окажется за файерволом или за какой-нибудь транзитной сетью, да и всякие касперские антивирусы такое будут всегда пытаться пресечь. И вообще - плохая идея. Сделайте, чтобы клиент с определенными промежутками времени просто опрашивал сервер и выводил нужное. А уж что сделать на сервере - зависит от фантазии. Самое примитивное - shared каталог с файлами заданий, немного посложнее - apache, которому подсунуть то что надо, ну или если охота заморачиваться с free pascal networking или программированием через сокеты - вэлкам. Но, imho, лучше делать как можно проще, чем замороченнее.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 27.01.2012 16:02:28
VinSS
Про каталог с файлами заданий думал, но регламенты на обработку маленькие, придется достаточно часто опрашивать, а файловый сервер наверняка не особенно мощный, а к нему будет компов 50 обращаться. Хотя как простейший и быстрейший вариант начну видимо с него.
А кто-нибудь подключал внешние девайсы для вывода информации (надо секундомер и/или 4/8 одно/двухзначных чисел)? Это уже чисто для себя, поэтому сложность не особенно важна, пока только теория.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 27.01.2012 17:49:24
Padre_Mortius
а чем база данных не устроила? Тот же firebird или mysql. И пусть клиенты читают данные из таблицы

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 28.01.2012 06:25:20
VinSS
Про БД тоже думал, но так как работаю в банке и я не админ :) каждый пук придется согласовывать (начиная от необходимости держать постоянно включенным комп вне серверной, до установки сервера БД), хотелось бы без посторонних обойтись, а то это может затянуться на долго.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 28.01.2012 10:26:14
alexey38
VinSS писал(а):Про БД тоже думал, но так как работаю в банке и я не админ :) каждый пук придется согласовывать (начиная от необходимости держать постоянно включенным комп вне серверной, до установки сервера БД), хотелось бы без посторонних обойтись, а то это может затянуться на долго.


Вы вначале сказали, что есть БД. Теперь говорите, что нет БД. Более четко сформулируйте задачу, откуда берутся данные (где они хранятся) и как определяется, что появились новые (или измененные) данные. Насчет сетевых технологий, то на низком уровне - это сокеты. Просто нужно выбрать TCP или UDP пакеты слать. Если TCP, то кто инициирует соединение, клиент или сервер.
Если брать высокоуровненые технологии, то можно взять банальный DCOM, но если честно, то довольно глючная технология, если возникают ошибки в сети.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 28.01.2012 11:38:40
Padre_Mortius
VinSS, а что приложение не нужно будет согласовывать? Точно такие же согласования и написание технической документации. А включенный постоянно комп вне серверной это очень плохо. Лучше все согласовать, ибо админы люди веселые, могут политиками накать что-нить и будет у вас куча проблем.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 28.01.2012 19:49:46
VinSS
alexey38, БД есть, в ней хранится много чего, в том числе задания и взявшие/назначенные на выполнение люди, но права есть только на чтение. Просто программа, которая была до меня она жутко неудобная, например, нельзя было настроить фильтр на несколько типов заданий, либо на один, либо все, а также она сама не обновляла список, в результате приходилось просто миллиард ненужны телодвижений делать. Задания приходят/назначаются сотрудникам, при этом пока сотрудник сам не проверит пришло ли ему задание, он не узнает, есть оно у него или нет (у обычного спеца нет прав даже на чтение, т.е. я хочу чтобы запускалась программа человеком, у которого есть права, делалась выборка и рассылались сообщения о пришедших заданиях). Поэтому, если использовать БД для рассылки заданий, то надо делать свою, еще одну.
Padre_Mortius, само приложение уже согласовано, я просто расширяю функционал. А про комп, не то чтобы очень плохо, отдел работает круглосуточно, так что все всегда под присмотром, но правила есть правила.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 29.01.2012 01:37:14
Padre_Mortius
VinSS, а в чем проблема с созданием дополнительной таблицы в этой базе?

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 29.01.2012 09:56:24
v-t-l
А СУБД какая?
Например в Postgresql и Firebird/Interbase (в других - не знаю) есть такие команды, как LISTEN и NOTIFY, которые как раз и предназначены для оповещения клиентов о событиях в БД.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 29.01.2012 11:06:39
alexey38
Пути решения задачи два:
1. Использовать стандартные технологии типа почты или Jabber. Соответственно тогда ваша прога будет просто формировать e-mail или будет отсылать типовые сообщения через Jabber. Преимущества в том, что клиента не нужно писать, а он может быть на любой платформе, в т.ч. на мобильной.

2. Написать вручную через Socket сервер и клиент. В принципе ничего сложного, есть стандартные компоненты TSocket, а можно через API ОС (У Вас винда?) - тоже не сложно.
Преимущества в том, что можно сделать какой угодно функционал, но все это будет нестандартным.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 29.01.2012 23:57:10
VinSS
Padre_Mortius писал(а):VinSS, а в чем проблема с созданием дополнительной таблицы в этой базе?

Проблем несколько:
1) Просто не разрешат :) в базу напрямую доступ по сути не предусмотрен, есть комплекс программ, им и надо пользоваться, но он уже и морально и физически устарел, так что права на чтение уже исключение;
2) База и тех поддержка от нас (тех кто работает с этим комплексом) разделены 1000 км, скорости тут конечно приличные, но мне кажется не целесообразно гонять инфу туда-сюда.

Добавлено спустя 1 минуту 7 секунд:
v-t-l писал(а):А СУБД какая?
Например в Postgresql и Firebird/Interbase (в других - не знаю) есть такие команды, как LISTEN и NOTIFY, которые как раз и предназначены для оповещения клиентов о событиях в БД.

БД SQL Server.

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 30.01.2012 00:21:56
Padre_Mortius
Просто не разрешат :) в базу напрямую доступ по сути не предусмотрен, есть комплекс программ, им и надо пользоваться, но он уже и морально и физически устарел, так что права на чтение уже исключение;

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

Re: Как передать сообщение зная IP?

СообщениеДобавлено: 30.01.2012 00:29:59
VinSS
alexey38 писал(а):Пути решения задачи два:
2. Написать вручную через Socket сервер и клиент. В принципе ничего сложного, есть стандартные компоненты TSocket.

Первый вариант слишком медленный, почту опять же надо вручную проверять. В лазарусе нет такого компонента :(

Добавлено спустя 6 минут 14 секунд:
Максим писал(а):Нет, ну что за люди, а?
http://bit.ly/wl3Itn
http://www.freepascal.ru/forum/viewtopic.php?f=5&t=7721


Попытался разобраться с lnet, для меня что-то слишком сложно, документации нет, как подключить не понятно, примеры все как один говорят "Невозможно найти модуль класса компонента TLSSLSessionComponent".

Добавлено спустя 13 минут 18 секунд:
Padre_Mortius писал(а):Ерундой не занимайтесь. Если официально согласована доработка или замена ПО, то обычно все действия разрешаются, а вы пытаетесь придумать себе проблему и героически ее решить.

У меня есть моя основная работа и от нее я тупею, а за написание этой проги мне не платят, но зато я развиваюсь. Поэтому наверно так и есть.
Почитал про сокеты (теорию), то что я как раз хотел. Есть где почитать про реализацию?