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

Модератор: Модераторы

VinSS
новенький
Сообщения: 26
Зарегистрирован: 29.12.2011 04:23:46

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

Сообщение VinSS »

Никогда с сеткой не работал, даже не знаю с чего начать.
Есть БД, к которой напрямую есть доступ только у некоторых сотрудников. Программа делает определенную выборку. В выборке список заданий и сотрудников, которым они назначены. Получается можно сказать серверная часть. Надо сделать клиентскую (например, просто значек в трее), в которую будет передаваться сообщение с заданием, а оно будет всплывать у значка в трее.
Собственно понимаю как сделать все, кроме передачи сообщения, подскажите хоть в каком направлении копать, что почитать, на какие операторы обратить внимание, да хоть как в гугле правильный запрос составить, чтобы найти то, что мне нужно.
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Нет, ну что за люди, а?

http://bit.ly/wl3Itn

viewtopic.php?f=5&t=7721
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

VinSS
Не надо на клиенте входящие запросы организовывать!
Поимеете массу проблем, если клиент окажется за файерволом или за какой-нибудь транзитной сетью, да и всякие касперские антивирусы такое будут всегда пытаться пресечь. И вообще - плохая идея. Сделайте, чтобы клиент с определенными промежутками времени просто опрашивал сервер и выводил нужное. А уж что сделать на сервере - зависит от фантазии. Самое примитивное - shared каталог с файлами заданий, немного посложнее - apache, которому подсунуть то что надо, ну или если охота заморачиваться с free pascal networking или программированием через сокеты - вэлкам. Но, imho, лучше делать как можно проще, чем замороченнее.
VinSS
новенький
Сообщения: 26
Зарегистрирован: 29.12.2011 04:23:46

Сообщение VinSS »

Про каталог с файлами заданий думал, но регламенты на обработку маленькие, придется достаточно часто опрашивать, а файловый сервер наверняка не особенно мощный, а к нему будет компов 50 обращаться. Хотя как простейший и быстрейший вариант начну видимо с него.
А кто-нибудь подключал внешние девайсы для вывода информации (надо секундомер и/или 4/8 одно/двухзначных чисел)? Это уже чисто для себя, поэтому сложность не особенно важна, пока только теория.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

а чем база данных не устроила? Тот же firebird или mysql. И пусть клиенты читают данные из таблицы
VinSS
новенький
Сообщения: 26
Зарегистрирован: 29.12.2011 04:23:46

Сообщение VinSS »

Про БД тоже думал, но так как работаю в банке и я не админ :) каждый пук придется согласовывать (начиная от необходимости держать постоянно включенным комп вне серверной, до установки сервера БД), хотелось бы без посторонних обойтись, а то это может затянуться на долго.
alexey38
долгожитель
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Сообщение alexey38 »

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


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

Сообщение Padre_Mortius »

VinSS, а что приложение не нужно будет согласовывать? Точно такие же согласования и написание технической документации. А включенный постоянно комп вне серверной это очень плохо. Лучше все согласовать, ибо админы люди веселые, могут политиками накать что-нить и будет у вас куча проблем.
VinSS
новенький
Сообщения: 26
Зарегистрирован: 29.12.2011 04:23:46

Сообщение VinSS »

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

Сообщение Padre_Mortius »

VinSS, а в чем проблема с созданием дополнительной таблицы в этой базе?
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

А СУБД какая?
Например в Postgresql и Firebird/Interbase (в других - не знаю) есть такие команды, как LISTEN и NOTIFY, которые как раз и предназначены для оповещения клиентов о событиях в БД.
alexey38
долгожитель
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Сообщение alexey38 »

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

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

Сообщение VinSS »

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

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

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

БД SQL Server.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Просто не разрешат :) в базу напрямую доступ по сути не предусмотрен, есть комплекс программ, им и надо пользоваться, но он уже и морально и физически устарел, так что права на чтение уже исключение;

Ерундой не занимайтесь. Если официально согласована доработка или замена ПО, то обычно все действия разрешаются, а вы пытаетесь придумать себе проблему и героически ее решить.
VinSS
новенький
Сообщения: 26
Зарегистрирован: 29.12.2011 04:23:46

Сообщение 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 писал(а):Ерундой не занимайтесь. Если официально согласована доработка или замена ПО, то обычно все действия разрешаются, а вы пытаетесь придумать себе проблему и героически ее решить.

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